我可以编写自己的算法来做到这一点,但我觉得应该有相当于 ruby's humanize 的算法在 C# 中。
我用谷歌搜索,但只找到了使日期人性化的方法。
例子:
- 将“Lorem Lipsum Et”变成“Lorem lipsum et”的方法
- 将“Lorem lipsum et”变成“Lorem Lipsum Et”的方法
最佳答案
如 @miguel's answer 的评论中所述, 你可以使用 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
它会忽略所有大写的东西,例如“LOREM LIPSUM ET”,因为如果文本中出现首字母缩略词,它会处理大小写,这样“IEEE”(电气和电子工程师协会)就不会变成“ieee” "或 "Ieee"。
但是,如果您只想将第一个字符大写,您可以执行 here 上的解决方案。 ……或者您可以拆分字符串并将列表中的第一个字符串大写:
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
关于c# - 如何用 C# 将每个单词的第一个字符或整个字符串的第一个字符大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/913090/