【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.