如何大写名字

Ste*_*eve 50 .net c#

所以基本上如果我想改变一个名字

stephen smith 
Run Code Online (Sandbox Code Playgroud)

Stephen Smith
Run Code Online (Sandbox Code Playgroud)

我可以轻松地使用来自页面上的css,但理想情况下我想早点抓住它并在数据库出来时更改它.如何让csharp将字符串封顶.

有这个功能吗?

Dex*_*ter 64

您可以使用System.Globalization.TextInfo类的ToTitleCase方法执行此操作:

CultureInfo cultureInfo   = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = cultureInfo.TextInfo;

Console.WriteLine(textInfo.ToTitleCase(title));
Console.WriteLine(textInfo.ToLower(title));
Console.WriteLine(textInfo.ToUpper(title));
Run Code Online (Sandbox Code Playgroud)

  • 在使用之前阅读ToTileCase(http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx)的描述非常重要.我认为这不是很"好".它的行为甚至没有被定义(它就像"它确实如此".)这个说明太棒了:"我们保留在未来使这个API变慢的权利." (23认同)
  • 对于程序员来说,一个人的名字和一本书的标题没有任何区别!(引用:Xanatos,2010年2月20日):-) :-) (6认同)
  • -1,抱歉,但是`ToTitleCase`用于*titles*中的大小写的标准化 - 就像新闻文章的标题 - 但不是人名.因此,就实际文化而言,您最终可能会得到不想要的结果. (3认同)
  • 我认为使用任何*自动*字符串格式化方法,会出现边缘情况,其中产生的值不是预期的100%,即姓氏如'd'Ythaq`.但是,这绝对是.Net Framework中目前可用于封装人名的最佳方法,而不是自己编写一个*处理边缘情况. (2认同)

Mar*_*ell 26

名字很棘手.First Letter的简单规则不适用.这里唯一的参议员方法是询问用户他们想要的方式.其他任何事都可能导致进攻.

如果我的名字是MacPhearson,ODowel,或者仅仅是marc,Marc甚至是mArC - 那么坦率地说:不管它.信任用户以使其正确.当你走进文化之间时,这会变得更加棘手.


小智 11

这是字符串类的扩展方法,可将单个单词大写。您可以将它与 astr.Split()和一起使用str.Join,以将字符串中的每个单词大写str。您可以添加对空字符串或一个字符长度字符串的检查。

public static string Capitalize(this string word)
{
    return word.Substring(0, 1).ToUpper() + word.Substring(1).ToLower();
}
Run Code Online (Sandbox Code Playgroud)