前回に引き続き、文字列の操作編。今回は文字列の判定です。
文字列に関わらず、ソースを書く際気をつけないといけないのが、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));