【Salesforce】文字列から半角の文字数を取得する

【Salesforce】文字列から半角の文字数を取得する

VisualforceでPDFを出力する際に、文字列の改行を記述する必要がありますね。

その際に文字数を数えることが多いため、半角の文字数を数える方法のメモです。

/**
 * 文字列から半角の文字数を取得する
 * 全角文字を2文字として計算する
 */
protected Integer getStringLength(String target)
{
    Integer length = 0;
    String param = '';

    // null回避
    if(String.isNotEmpty(target)){

        param = target;
    }

    // 文字数分ループする
    for(Integer i = 0 ; i < param.length(); i++){

        String chr;
        Integer byteSize;

        // 1文字取得する
        chr = param.substring(i, (i + 1));
        // 1文字のバイト数を取得する
        byteSize = Blob.valueOf(chr).size();

        // 複数バイトの場合は全角とする
        if(byteSize > 1){

            length++;
        }
        length++;
    }

    return length;
}

全角文字を半角文字の2文字分として数えています。

実際には文字の間隔があったりするので正確ではありませんが、ざっくりと数えています。

考えてみると、文字列の途中に改行があった場合に対応できていませんね。

そのあたりはご愛敬でお願いします。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です