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