首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用C#大写每个单词的第一个字符,或者整个字符串的第一个字符?

如何使用C#大写每个单词的第一个字符,或者整个字符串的第一个字符?
EN

Stack Overflow用户
提问于 2009-05-26 22:28:13
回答 9查看 89.4K关注 0票数 93

我可以编写自己的算法来做这件事,但我觉得在C#中应该有等同于ruby's humanize的东西。

我用谷歌搜索了一下,但只找到了让约会变得人性化的方法。

示例:

  • 把"Lorem Lipsum Et“变成"Lorem lipsum et”的方法
  • 把"Lorem lipsum et“变成"Lorem Lipsum Et”的方法
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-05-27 07:08:57

正如在@miguel's answer的注释中所讨论的,您可以使用从.NET 1.1开始提供的TextInfo.ToTitleCase。以下是与您的示例对应的一些代码:

代码语言:javascript
复制
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…上的解决方案或者,您可以只拆分字符串,并将列表中的第一个字符串大写:

代码语言:javascript
复制
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 
票数 152
EN

Stack Overflow用户

发布于 2015-04-02 10:11:51

使用正则表达式看起来要干净得多:

代码语言:javascript
复制
string s = "the quick brown fox jumps over the lazy dog";
s = Regex.Replace(s, @"(^\w)|(\s\w)", m => m.Value.ToUpper());
票数 39
EN

Stack Overflow用户

发布于 2017-07-11 20:27:17

还有另一种优雅的解决方案:

在项目的静态类中定义函数ToTitleCase

代码语言:javascript
复制
using System.Globalization;

public static string ToTitleCase(this string title)
{
    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(title.ToLower()); 
}

然后在项目中的任何地方像字符串扩展一样使用它:

代码语言:javascript
复制
"have a good day !".ToTitleCase() // "Have A Good Day !"
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/913090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档