C#中如何将句子首字母大写?

7

我正在尝试将句子中的第一个单词大写。这是我的代码,但它没有起作用。

可能是重复问题:
如何在C#中使首字母大写

char.ToUpper(sentence[0]) + sentence.Substring(1)

你是指句子的第一个字母吗? - Jf Beaulac
解决了 - 我通过以下方式解决了它。出于某种附加原因,我需要它是 sentence[1] 和 substring(2)。sentence = Char.ToUpper(sentence[1]) + sentence.Substring(2); - amedeiros
也许你可以先运行 sentence = sentence.Trim();。第一个字母前可能有一个空格。 - user1934286
2个回答

9

JaredPar的解决方案是正确的,但我也想指向TextInfo类。ToTitleCase()将大写第一个字母,并将其余转换为小写。

        string s = "heLLo";
        var t = new CultureInfo("en-US", false).TextInfo;
        s = t.ToTitleCase(s); // Prints "Hello"

8
你可以使用 CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s) 来实现,无需创建新的 CultureInfo。该方法可将字符串 s 转换为标题大小写形式,且不改变原始文本的含义。 - Blorgbeard
5
不是这样的。TextInfo.ToTitleCase() 将每个单词的首字母转换为大写字母,而不仅仅是字符串(本例中的句子)的第一个字母,这就是问题所询问的。 - Camille Sévigny
请查看@Camille Sévigny的评论。 - Zunair

5

看起来你只是想将一个字符串的首字母大写。如果是这样,那么你的代码就很好,但你需要将新字符串赋值回到sentence变量中。

sentence = char.ToUpper(sentence[0]) + sentence.Substring(1)

.NET中的string是不可变的,因此每个更改string的操作都会产生一个新值。它不会直接更改原始值。所以为了看到改变的结果,你必须将其赋值给一个变量。


我尝试过这个,但结果仍然是一样的。 - amedeiros
@user1072481,你是如何使用 sentence 的?上面的代码应该可以正常工作,所以问题可能出在结果的使用上。 - JaredPar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接