読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

String.IsNullOrWhiteSpaceメソッド (System.String, .NET 4.0で追加されたメソッド, 空白文字も空とみなす, 全角文字も空白文字とみなす)


.NET 4.0にて、System.Stringクラスに以下のstaticメソッドが追加されました。

String.IsNullOrWhiteSpace


これは、以前から存在していたIsNullOrEmptyメソッドに、「空白文字のみの文字列」の場合も
空と見なす条件を追加したものになります。


前までは、以下のように記述する必要がありました。

if (string.IsNullOrEmpty(str) || str.Trim().Length == 0)
{
    ....
}


これからは、以下のように記述できます。

if (string.IsNullOrWhiteSpace(str))
{
    ....
}


以下、サンプルです。

    public class StringIsNullOrWhiteSpaceSamples01 : IExecutable
    {
        public void Execute()
        {
            //
            // String::IsNullOrWhiteSpaceメソッドは、IsNullOrEmptyメソッドの動作に
            // 加え、更に空白文字のみの場合もチェックしてくれる。
            //
            string nullStr         = null;
            string emptyStr        = string.Empty;
            string spaceStr        = "        ";
            string normalStr       = "hello world";
            string zenkakuSpaceStr = "   ";
            
            //
            // String::IsNullOrEmptyでの結果.
            //
            Console.WriteLine("============= String::IsNullOrEmpty ==============");
            Console.WriteLine("nullStr   = {0}", string.IsNullOrEmpty(nullStr));
            Console.WriteLine("emptyStr  = {0}", string.IsNullOrEmpty(emptyStr));
            Console.WriteLine("spaceStr  = {0}", string.IsNullOrEmpty(spaceStr));
            Console.WriteLine("normalStr = {0}", string.IsNullOrEmpty(normalStr));
            Console.WriteLine("zenkakuSpaceStr = {0}", string.IsNullOrEmpty(zenkakuSpaceStr));
            
            //
            // String::IsNullOrWhiteSpaceでの結果.
            //
            Console.WriteLine("============= String::IsNullOrWhiteSpace ==============");
            Console.WriteLine("nullStr   = {0}", string.IsNullOrWhiteSpace(nullStr));
            Console.WriteLine("emptyStr  = {0}", string.IsNullOrWhiteSpace(emptyStr));
            Console.WriteLine("spaceStr  = {0}", string.IsNullOrWhiteSpace(spaceStr));
            Console.WriteLine("normalStr = {0}", string.IsNullOrWhiteSpace(normalStr));
            Console.WriteLine("zenkakuSpaceStr = {0}", string.IsNullOrWhiteSpace(zenkakuSpaceStr));
        }
    }


実行すると、以下の結果になります。

  ============= String::IsNullOrEmpty ==============
  nullStr   = True
  emptyStr  = True
  spaceStr  = False
  normalStr = False
  zenkakuSpaceStr = False
  ============= String::IsNullOrWhiteSpace ==============
  nullStr   = True
  emptyStr  = True
  spaceStr  = True
  normalStr = False
  zenkakuSpaceStr = True


なんと、全角スペースも空白文字として処理してくれてます。
これが、いいのか悪いのかは微妙ですが、ともかく個人的にはとても便利なメソッド
が追加されたと思ってます。