c# - 如何用 C# 将每个单词的第一个字符或整个字符串的第一个字符大写?

标签 c# string humanize

我可以编写自己的算法来做到这一点,但我觉得应该有相当于 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/

相关文章:

c - C中的字符串问题

将字符串文字与字 rune 字连接起来

java - 我可以根据其字段的值获取枚举吗?

c# - C# 中的非初始化变量

C# 和 ASP.NET MVC : Using #if directive in a view

python - Python中的自然/相对天数

python - Django在模板之外人性化?

python - 如何在 Django 模板中使用 Humanize 显示 "x days ago"类型时间?

c# - Process.Start() 是同步的吗?

c# - Entity Framework - 冗余连接字符串