.NET 文字列が半角であるかをチェックする

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」メソッドを実際に動かした時の挙動を確認できます。
 
文字列が半角であるかをチェック(長さで判定)
 
IsHalfByLength(" 
 ");                   
実行結果:
 
文字列が半角であるかをチェック(正規表現で判定、半角カタカナは「ヲ」~半濁点までを有効とする)
 
IsHalfByRegex(" 
 ");                    
実行結果:

g h T
 47,581 Total Views

ADVERTISING

駅チカ!ホテル検索
全国の駅や目的地近くの宿泊施設を検索し予約することができます。最寄駅沿線からもホテルを検索できるので、アクセスのよいホテルを予約することが可能です。
  1. コメントはまだありません。

  1. トラックバックはまだありません。