|
.NET TIPS
文字列の全角/半角をチェックするには?
デジタルアドバンテージ
2003/04/11 |
|
|
シフトJIS文字列は全角文字が2byte、半角文字が1byteと決められているため、TIPS:文字列の長さを取得するには?とTIPS:文字列のバイト数を取得するには?にある方法を組み合わせると、文字列中の文字がすべて全角かどうか、あるいは、すべて半角かどうか、をチェックすることができる。
チェック対象となる文字列がすべて全角文字の場合は、文字列のシフトJISとしてのバイト数は、その文字列の文字数を2倍した値と等しくなるはずである。一方、文字列がすべて半角文字からなる場合は、文字列のバイト数と文字数は等しくなるはずである。
次のサンプル・プログラムは、この2つのチェック・ルーチンを実装したものだ。isZenkakuメソッドが全角チェックを、isHankakuメソッドが半角チェックを行う。両者ともパラメータには対象となる文字列を指定する。
// strcheck.cs
using System;
using System.Text;
public class StringChecker {
static Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
public static bool isZenkaku(string str) {
int num = sjisEnc.GetByteCount(str);
return num == str.Length * 2;
}
public static bool isHankaku(string str) {
int num = sjisEnc.GetByteCount(str);
return num == str.Length;
}
public static void Main() {
string str = "全角文字だけ";
Console.WriteLine(isZenkaku(str)); // 出力:True
Console.WriteLine(isHankaku(str)); // 出力:False
str = "ハンカクonly";
Console.WriteLine(isZenkaku(str)); // 出力:False
Console.WriteLine(isHankaku(str)); // 出力:True
str = "全角and半角";
Console.WriteLine(isZenkaku(str)); // 出力:False
Console.WriteLine(isHankaku(str)); // 出力:False
}
}
// コンパイル方法:csc strcheck.cs
|
|
文字列の全角チェックと半角チェックを行うC#のサンプル・プログラム(strcheck.cs) |
|
これらのメソッドは、テキスト・ボックスなどに入力された値のチェックに利用できるだろう。
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間