将字符串转换为标题大小写
我有一个字符串,其中包含大写和小写字符混合的单词。
例如: string myData = "a Simple string";
我需要将每个单词的首字符(用空格分隔)转换为大写。 所以我想要的结果为: string myData ="A Simple String";
有没有简单的方法来做到这一点? 我不想分割字符串并进行转换(这将是我的最后手段)。 另外,保证字符串是英文的。
MSDN:TextInfo.ToTitleCase
确保你包含: using System.Globalization
string title = "war and peace";
TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
title = textInfo.ToTitleCase(title);
Console.WriteLine(title) ; //War And Peace
//When text is ALL UPPERCASE...
title = "WAR AND PEACE" ;
title = textInfo.ToTitleCase(title);
Console.WriteLine(title) ; //WAR AND PEACE
//You need to call ToLower to make it work
title = textInfo.ToTitleCase(title.ToLower());
Console.WriteLine(title) ; //War And Peace
尝试这个:
string myText = "a Simple string";
string asTitleCase =
System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.
ToTitleCase(myText.ToLower());
正如已经指出的那样,使用TextInfo.ToTitleCase可能不会给你想要的确切结果。 如果你需要更多的控制输出,你可以做这样的事情:
IEnumerable<char> CharsToTitleCase(string s)
{
bool newWord = true;
foreach(char c in s)
{
if(newWord) { yield return Char.ToUpper(c); newWord = false; }
else yield return Char.ToLower(c);
if(c==' ') newWord = true;
}
}
然后像这样使用它:
var asTitleCase = new string( CharsToTitleCase(myText).ToArray() );
还有另一种变化。 基于这里的几个技巧,我已经将它缩减为这种扩展方法,这对我的目的非常有用:
public static string ToTitleCase(this string s) {
return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s.ToLower());
}
链接地址: http://www.djcxy.com/p/21025.html