【Apex】文字列のバイト数をカウント。SJISで・・

Salesforce

文字列のバイト数をカウントする時は

Blob.valueOf(文字列).size()

でいけます。ただApexの文字列はUTF-8で扱われるため、全角3バイト、半角1バイトでカウントされます。SJISだと全角は2バイトなので、要件によっては上記で単純にカウントできない。

ではSJIS用に全角を2バイトでカウントしたい場合はどうするか・・とりあえずこんな感じでどうでしょうか。

処理結果
UTF8でバイト数カウント=13
SJISでバイト数カウント=10

全角と半角の判定を、Blob.size() > 1 でやっているという何とも単純なコードです。なんか考慮漏れがあるような気がしないでもない・・ですが、一応イケるかな。

コメント

タイトルとURLをコピーしました