転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

C#を勉強する12_文字列の判定

前回に引き続き、文字列の操作編。今回は文字列の判定です。
文字列に関わらず、ソースを書く際気をつけないといけないのが、nullpointerexceptionだ。Stringクラスの静的メソッドには、このnull判定が用意されている。

// null あるいは空文字列の場合、trueを返す
if(String.IsNullOrEmpty(str)) { }

空文字かどうかだけ調べる場合は

// 空文字列の場合、trueを返す
if(str == String.Empty) { }

あと、こんな判定もある。

// null 空文字列か空白文字列かを調べる
if(string.IsNullOrWhiteSpace(str)) { }

ここまではnull判定だったが、文字列判定といえば「その文字列に〜が含まれているか」などの判定が多い。まずは、指定した部分文字列で始まっているか調べる方法だ。

// 指定した部分文字列で始まっている場合は、trueを返す
if(str.StartsWith("Visual")) { }

StartsWithがあるなら、EndsWithもある。

// 指定した部分文字列で終わっている場合は、trueを返す
if(str.EndsWith("Exception")) { }

次は、指定した部分文字列が含まれているかを調べる。

// 指定した部分文字列が含まれている場合は、trueを返す
if(str.Contains("Program")) { }

上は、文字列が含まれているかどうかだったが、次は文字が含まれているか。

var contains = str.Contains('b');

ここまでは部分文字列が含まれているかだったが、「小文字が入っているかどうか」など条件を満たしているかをチェックするにはLINQを使う。

var target = "C# Programming";
// 小文字がある場合は、trueを返す
var isExists = target.Any(c => Char.IsLower(c));

Anyメソッドは、文字列のうちいづれかが条件を満たしているとtrueを返した。すべての文字列が条件を満たしているかチェックする場合は、Allメソッドを使う。

var target = "141421356";
// すべての文字が数字の場合、trueを返す
var isAllDigits = target.All(c => Char.IsDigit(c));