2012-03-28

Force.com : Apex で文字列が byte 数以下か判定したい


Apex で文字列が byte 数以下か判定したい



そもそも salesforce 内でシステムが完了していたら byte 数など気にする必要は、よほどのことがない限りないだろうと思う。



○ 文字列が byte 数以下か判定したい

/**
 * Byte 数以下か判定を行う
 * @param bytes byte 数
 * @param s 文字列
 * @return true: 以下/false: より上
 */
static Boolean isByteLessThan(Integer bytes, String s) {
    if(bytes < 0) return false;
    if(s == null || s == '') return true;

    Integer zenkakuLength = s.replaceAll('[\\uFF61-\\uFF9F\\u0020-\\u007E]', '').length();
    Integer hankakuLength = s.length() - zenkakuLength;
    return bytes >= zenkakuLength * 2 + hankakuLength;
}



◆ メモ

  • 文字列は長さしか取得できない
  • force.com 上で Apex コードは UTF-8 で処理されているらしいので、半角文字のコードは Unicode (半角カタカナをハードコーディングしたらシステムエラーが発生した)
  • 正規表現は Pattern (Java 2 Platform SE 5.0) を参照



◇ 環境

  • Salesforce - Developer Edition - API バージョン 24.0



◇ 参考


0 件のコメント:

コメントを投稿