例えば 99999
や aaaa
など、文字列内の文字が全て同じかどうかを簡単にチェックする方法です。
まず、単純に同じ文字かどうかだけを判定するなら、Linq を使えば一発です。
var str = "99999";
Console.WriteLine(str.Distinct().Count() == 1);// True
重複を排除した結果、要素数が1つだけになっていれば全て同じ文字と判断できます。
特定の文字の場合のみ、文字列内が全て同じ文字かどうかを判定したいなら、フィルタリングする必要があります。
var str1 = "00000";
var str2 = "00999";
var str3 = "99999";
// 文字が全て 9 の場合のみ True にしたい
Console.WriteLine(!str1.Any(x => x != '9') && str1.Distinct().Count() == 1);// False
Console.WriteLine(!str2.Any(x => x != '9') && str2.Distinct().Count() == 1);// False
Console.WriteLine(!str3.Any(x => x != '9') && str3.Distinct().Count() == 1);// True
9
以外の文字を抽出した結果、要素数が 0 だったならば9
以外の文字が含まれていない- 重複を排除した結果、要素数が1つだけになっていれば全て同じ文字
この2つの条件で判断できます。
コード自体は短いですが、毎回これを書くのも面倒なので、拡張メソッドでも作成しておくと便利かと思います。
もっと簡単に判別できる方法があれば教えてください。