我可以编写自己的算法来做到这一点,但我觉得应该有相当于ruby 的人性化 http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001339 in C#.
我用谷歌搜索,但只找到了使日期人性化的方法。
例子:
- 将“Lorem Lipsum Et”变成“Lorem Lipsum et”的方法
- 将“Lorem Lipsum et”变成“Lorem Lipsum Et”的方法
正如评论中所讨论的@米格尔的回答 https://stackoverflow.com/questions/913090/how-to-capitalize-the-first-character-of-each-word-or-the-first-character-of-a-w/913102#913102, 您可以使用TextInfo.ToTitleCase http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx从 .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
它将忽略全部大写的内容,例如“LOREM LIPSUM ET”,因为它会处理文本中出现首字母缩略词的情况,以便“IEEE”(电气和电子工程师协会)不会变成“ieee”或“哎哟”。
但是,如果您只想大写第一个字符,您可以执行结束的解决方案here http://channel9.msdn.com/forums/TechOff/252814-Howto-Capitalize-first-char-of-words-in-a-string-NETC/…或者您可以拆分字符串并将列表中的第一个大写:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)