2015/04/03

【C#】文字列の先頭や末尾、部分一致をチェックする

photo by Tim Reckmann

よく「先頭が○だったらA処理、×だったらB処理」みたいな条件分岐がある。
そんなときに便利なのが、String.StartsWithString.EndsWith

var value = "ABC123";

if (value.StartsWith("A"))
{
  Console.WriteLine("先頭がA");
}

if (value.EndsWith("3"))
{
  Console.WriteLine("末尾が3");
}

単純に「先頭がこの文字列なら」と指定できる場合は、上記の方法で対処可能だ。

ただ、先頭が英字のみとか、末尾が数値のみというようなチェックの場合は、StartsWith、EndsWithが使えない。


そんなときは「正規表現」を使う。

using System.Text.RegularExpressions;

var value = "ABC123";

if (Regex.IsMatch(value, @"^[a-zA-Z]"))
{
  Console.WriteLine("先頭が英字");
}

if (Regex.IsMatch(value, @"[0-9]$"))
{
  Console.WriteLine("末尾が数字");
}

文字列の先頭を表すのが「^」、末尾を表すのが「$」
[a-zA-Z]や[0-9]は正規表現の定番で、「a~z、またはA~Z」、「0~9」よいう意味。


「○が含まれる」という条件の場合は、value.Contains(“12”)とかRegex.IsMatch(value, @”[0-9]”)みたいな書き方もできる。



ちなみに正規表現のパターンの頭につけている「@」は、逐語的文字列リテラルと呼ばれるもの。
これをつける事によって、二重引用符で囲まれた文字列のエスケープシーケンス(\nとか\tとか)を処理せずそのまま解釈してくれる便利なヤツ。


以上

written by @bc_rikko

0 件のコメント :

コメントを投稿