如何用C#小写除第一个字符以外的字符串

Ric*_*cky 17 c#

除第一个字符外,如何将字符串转换为小写?这可以用LINQ完成吗?

谢谢

Ode*_*ded 33

如果字符串中只有一个单词,则可以使用TextInfo.ToTitleCase.无需使用Linq.

正如@Guffa所说:

这会将任何字符串转换为标题大小写,因此,"hello world"和"HELLO WORLD"都将转换为"Hello World".


为了实现exectly你问(转换所有字符时,除了第一个),你可以做到以下几点:

string mostLower = myString.Substring(0, 1) + myString.Substring(1).ToLower();
Run Code Online (Sandbox Code Playgroud)

  • 这不符合OP所要求的.而不是把字符串"这个和那个"变成"这个和那个"`它将把它变成"这个和那个"`. (7认同)
  • 附录:我刚刚注意到`ToTitleCase`保持全大写字符串不变.它将把"你好世界"变成"你好世界",但它会让"你好世界"保持不变. (3认同)

Guf*_*ffa 18

这可以通过简单的字符串操作完成:

s = s.Substring(0, 1) + s.Substring(1).ToLower();
Run Code Online (Sandbox Code Playgroud)

请注意,这完全符合您的要求,即它将所有字符转换为小写,但第一个字符保持不变.

如果您还想将第一个字符更改为大写字母,则可以执行以下操作:

s = s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
Run Code Online (Sandbox Code Playgroud)

请注意,此代码假定字符串中至少有两个字符.如果有可能它更短,你当然应该首先测试它.


dec*_*one 17

String newString = new String(str.Select((ch, index) => (index == 0) ? ch : Char.ToLower(ch)).ToArray());
Run Code Online (Sandbox Code Playgroud)

  • 很好,有趣的答案,但我不认为LINQ是这种低级操作的正确工具. (2认同)
  • 同意.我也赞成了Oded的回答.但就OP而言,这是我想尝试使用LINQ的. (2认同)

Vya*_*Dev 7

使用名称空间 using System.Globalization;

...

string value = CultureInfo.CurrentCulture.TextInfo.ToTitleCase("hello");
Run Code Online (Sandbox Code Playgroud)

编辑

此代码仅在其单个单词时起作用.对于将所有字符转换为较低的除了第一个字母检查Guffa Answer.

string value = myString.Substring(0, 1) + myString.Substring(1).ToLower();
Run Code Online (Sandbox Code Playgroud)