StringComparer.CurrentCultureIgnoreCase
を使用してインスタンス化され、ユーザー入力を確認するために.Contains(文字列入力)を広範囲に使用しているHashSet<string>
があります。ユーザーが間違ったケースで値を入力すると、.Contains = trueとなり、正しいですが、大文字と小文字も修正する必要があります。例えば、ユーザがmyvalue
とMyValue
をハッシュセットに要求すると、MyValue
も返す最も効率的な方法は何ですか?ユーザの入力は大文字と小文字が区別されますか?ハッシュセット<string>から正しいケース値を取得するにはどうすればよいですか?
static HashSet<string> testHS = new HashSet<string>(StringComparer.CurrentCulture);
static bool InputExists(string input, out string correctedCaseString)
{
correctedCaseString = input;
if (testHS.Contains(input))
{
// correctedCaseString = some query result of the cased testHS value?
return true;
}
return false;
}
あなたは私にそれを打つことができます。 – Greg
エレガントで、それは決して考えなかったでしょう。しかし、私のオブジェクトを変更することなくそれを行う方法はありますか?さもなければ、Linqメソッドはハッシュセットを使って "最良の方法"(そして多すぎる/高すぎる)の下にありますか?編集:他の答えがvamoosedされているようだ... – downwitch