またString.ToTitleCase()はほとんどの文字列のために働くが、マクドナルドとオブライアンのような名前に問題がある、と私はのCurrentCultureを使用します。大文字と小文字の違いこれは、これらを処理する単純な拡張メソッドです:
また
public string ToProperCase(this string value)
{
if (string.IsNullOrEmpty(value)) {
return "";
}
string proper = System.Threading.Thread.CurrentThread.CurrentCulture.
TextInfo.ToTitleCase(value.ToLower());
int oddCapIndex = proper.IndexOfAny({
"D'",
"O'",
"Mc"
});
if (oddCapIndex > 0) {
// recurse
proper = proper.Substring(0, oddCapIndex + 2) +
proper.Substring(oddCapIndex + 2).ToProperCase();
}
return proper;
}
IndexOfAny(String []型)延長:
public int IndexOfAny(this string test, string[] values)
{
int first = -1;
foreach (string item in values) {
int i = test.IndexOf(item);
if (i > 0) {
if (first > 0) {
if (i < first) {
first = i;
}
} else {
first = i;
}
}
}
return first;
}
あなたの偉大な答えに追加するには、複数のオブジェクトを作成するのではなく、単にSystem.Globalization.CultureInfo.InvariantCulture.TextInfo.ToTitleCase(myString.ToLower()); –
ありがとうございましたJamieは、長い文字列が好きだと思っていました。私のコードブロックにスクロールバーを置くことはできません:) –