Spo*_*ike 114
正如@ miguel的回答的评论中所讨论的,您可以使用TextInfo.ToTitleCase
自.NET 1.1以来可用的版本.以下是与您的示例对应的一些代码:
string lipsum1 = "Lorem lipsum et";
// Creates a TextInfo based on the "en-US" culture.
TextInfo textInfo = new CultureInfo("en-US",false).TextInfo;
// Changes a string to titlecase.
Console.WriteLine("\"{0}\" to titlecase: {1}",
lipsum1,
textInfo.ToTitleCase( lipsum1 ));
// Will output: "Lorem lipsum et" to titlecase: Lorem Lipsum Et
Run Code Online (Sandbox Code Playgroud)
它将忽略所有大写字母的内容,例如"LOREM LIPSUM ET",因为如果首字母缩略词是文本的话,它会处理案例(因此" NAMBLA "不会变成"nambla"或"Nambla").
但是,如果您只想将第一个字符大写,则可以执行此处的解决方案...或者您可以拆分字符串并将列表中的第一个字符大写:
string lipsum2 = "Lorem Lipsum Et";
string lipsum2lower = textInfo.ToLower(lipsum2);
string[] lipsum2split = lipsum2lower.Split(' ');
bool first = true;
foreach (string s in lipsum2split)
{
if (first)
{
Console.Write("{0} ", textInfo.ToTitleCase(s));
first = false;
}
else
{
Console.Write("{0} ", s);
}
}
// Will output: Lorem lipsum et
Run Code Online (Sandbox Code Playgroud)
Xel*_*ela 31
使用正则表达式看起来更干净:
string s = "the quick brown fox jumps over the lazy dog";
s = Regex.Replace(s, @"(^\w)|(\s\w)", m => m.Value.ToUpper());
Run Code Online (Sandbox Code Playgroud)
G.B*_*ato 15
还有一个优雅的解决方案:
ToTitleCase
在项目的静态类中定义函数
using System.Globalization;
public static string ToTitleCase(this string title)
{
return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(title.ToLower());
}
Run Code Online (Sandbox Code Playgroud)
然后在项目的任何位置使用它像字符串扩展:
"have a good day !".ToTitleCase() // "Have A Good Day !"
Run Code Online (Sandbox Code Playgroud)