- 2015/6/7 05:51
C#、VB.NETで文字列が半角であることをチェックします。まずは一般的な文字列の「長さ」と「バイト数」が等しいことで判定する方法を説明します。
●
文字列が半角であるかをチェック(長さで判定)
/// <summary>
/// 文字列が半角かどうかを判定します
/// </summary>
/// <remarks>半角の判定を長さで行います</remarks>
/// <param name="target">対象の文字列</param>
/// <returns>文字列が半角の場合はtrue、それ以外はfalse</returns>
public static bool IsHalfByLength(string target)
{
return target.Length == Encoding.GetEncoding("shift_jis").GetByteCount(target);
}
文字列の長さとシフトJISでの文字列のバイト数が等しい場合は半角とみなします。これでほとんどの要件は満たすことができると思いますが、たとえば『半角カナは「ヲ」~半濁点までを有効とする』といった要件が加わった場合は正規表現を使います。
●
文字列が半角であるかをチェック(正規表現で判定、半角カタカナは「ヲ」~半濁点までを有効とする)
/// <summary>
/// 文字列が半角かどうかを判定します
/// </summary>
/// <remarks>半角の判定を正規表現で行います。半角カタカナは「ヲ」~半濁点を半角とみなします</remarks>
/// <param name="target">対象の文字列</param>
/// <returns>文字列が半角の場合はtrue、それ以外はfalse</returns>
public static bool IsHalfByRegex(string target)
{
return new Regex("^[\u0020-\u007E\uFF66-\uFF9F]+$").IsMatch(target);
}
以下のエリアでは「IsHalfByLength」と「IsHalfByRegex」メソッドを実際に動かした時の挙動を確認できます。
●
文字列が半角であるかをチェック(長さで判定)
●
文字列が半角であるかをチェック(正規表現で判定、半角カタカナは「ヲ」~半濁点までを有効とする)