dポイントプレゼントキャンペーン実施中!

文字列から1文字ずつバイト数を取得(判定)したいのですが、
char型の文字のバイト数を取得するスマートな方法はありますか?

今考えているのは以下のようなコードです。

String str ="あA"
for(int i=0; i < str.length(); i++) {
char ch = str.charAt(i);

StringBuffer SB = new StringBuffer();
SB.append(c);

if(SB.toString().getBytes.length == 1) {
//1バイトの処理
} else {
//2バイトの処理
}

}

A 回答 (2件)

もっと根本的に直す方法があるかもしれませんが、


とりあえずこんな感じで少しすっきりすると思います。

String str ="あA";
char[] ch = str.toCharArray();
for(int i=0; i < ch.length; i++) {
int bytes = Character.toString(ch[i]).getBytes().length;
以下略
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
アドバイスいただいたようにしてみます!

お礼日時:2007/07/10 09:12

char ch = str.charAt(i);


に対して
int l = Character.toString(ch).getBytes().length;
でプラットフォームのデフォルト文字セットでの文字のバイト長lが得られます。
文字セットを指定したい場合は
int l = Character.toString(ch).getBytes(charsetName).length;
とすればよいでしょう。
ただし、文字列を1文字ごと処理するならcharを使わずsubstringで一文字文字列を抽出してしまう方が簡単かもしれません。
すなわち
String ch = str.substring(i, i+1);
int l = ch.getBytes().length;
のようにです。
    • good
    • 0
この回答へのお礼

回答ありがとうございました!

お礼日時:2007/07/10 09:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!