「みんな教えて! 選手権!!」開催のお知らせ

お世話になります。
2バイト文字かどうかの判定のやり方ですが、

String a = "";//←判定したい1文字(とりあえずStringとします)
byte[] b = a.getByte();
if((int)b[0]<0){
//2byte文字
}else{
//1byte文字
}

という判定の方法はありですか?
それとも根本的に考え方間違えてますでしょうか??

A 回答 (1件)

それもまあありだとは思いますが、私なら正直にこうします。



String a = "あ"; // 判定したい1文字
switch (a.getBytes("Shift_JIS").length) {
case 1:
 // 1バイト文字
 break;
case 2:
 // 2バイト文字
 break;
default:
 // 何かがおかしい
 break;
}


また、上のよりも早い方法としては、

char c = 'あ'; // 判定したい1文字
if ((0x20 <= c && c <= 0x7f) || (0xff61 <= c && c <= 0xff9f)) {
// 1バイト文字である
} else {
// 1バイト文字ではない
}

ただし、これらの方法では判定したい文字がJISにない文字だった場合のための例外処理が行えません。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

そうですね。
変にややこしく考えていたのかもしれません。
私の考えでもまぁありということなので
ちょっと安心致しました。

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

お礼日時:2004/07/26 23:05

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


おすすめ情報