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

C# 如何使用C将除第一个字符以外的字符串小写#,c#,C#,如何将字符串转换为除第一个字符以外的小写字符? 这可以用LINQ完成吗 谢谢如果字符串中只有一个单词,您可以使用。不需要使用Linq 如前所述: 这会将任何字符串转换为标题大小写,因此,“helloworld”和“helloworld”都会转换为“helloworld” 要完全实现您的要求(将除第一个字符外的所有字符转换为小写),可以执行以下操作: string mostLower = myString.Substring(0, 1) + myString.Substring(1).ToLow

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


谢谢

如果字符串中只有一个单词,您可以使用。不需要使用Linq

如前所述:

这会将任何字符串转换为标题大小写,因此,“helloworld”和“helloworld”都会转换为“helloworld”


要完全实现您的要求(将除第一个字符外的所有字符转换为小写),可以执行以下操作:

string mostLower = myString.Substring(0, 1) + myString.Substring(1).ToLower();

使用命名空间:
使用System.Globalization

编辑

此代码仅在其单个单词时有效。若要将所有字符转换为除第一个字母外的小写字母,请检查Guffa答案

string value = myString.Substring(0, 1) + myString.Substring(1).ToLower();

不确定是否可以在linq中执行此操作这里有一种非linq方法:

    public static string FirstCap(string value)
    {
        string result = String.Empty;

        if(!String.IsNullOrEmpty(value))
        {
            if(value.Length == 1)
            {
                result = value.ToUpper();
            }
            else
            {
                result = value.Substring(0,1).ToString().ToUpper() + value.Substring(1).ToLower();
            }
        }

        return result;
    }

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

s = s.Substring(0, 1) + s.Substring(1).ToLower();
请注意,这完全符合您的要求,即它将所有字符转换为小写,但第一个字符保持不变

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

s = s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();

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

基于guffa上面的例子(稍加修改)。您可以将其转换为扩展方法(请原谅名称不正确的方法:):

用法:

var myNewString = myOldString.UpperFirst();
// or simply referenced as myOldString.UpperFirst() where required

干杯guffa

您可以使用扩展方法:

var initialString = "Hello hOW r u?";          

var res = string.Concat(initialString..ToUpper().Substring(0, 1), initialString.ToLower().Substring(1));
static class StringExtensions
{
    public static string ToLowerFirst(this string text)
        => !string.IsNullOrEmpty(text)
            ? $"{text.Substring(0, 1).ToLower()}{text.Substring(1)}"
            : text;
}
单元测试(使用FluentAssertions和Microsoft单元测试):


你能不能把它全部小写,然后把第一个字符改成大写?劳埃德,你做到了,请看下面我的答案:)答案不错,很有趣,但我不认为LINQ是这种低级操作的合适工具。我也对奥德的答案投了赞成票。但正如OP所说,这是我想尝试使用LINQ的东西。这并不能满足OP的要求。不是将字符串
“THIS AND THAT”
转换为
“THIS AND THAT”
而是将其转换为
“THIS AND THAT”
。附录:我刚刚注意到
ToTitleCase
保留了一个全大写字符串。它将把
“hello world”
变成
“hello world”
,但它将保持
“hello world”
不变;这里的描述是这样说的:这不符合OP的要求。不是将字符串
“THIS AND THAT”
转换为
“THIS AND THAT”
而是将其转换为
“THIS AND THAT”
。附录:我刚刚注意到
ToTitleCase
保留了一个全大写字符串。它将把
“this and that”
转换为
“this and that”
,但它将保持
“this and that”
不变。如果需要,它显然可以很好地转换为扩展方法:)priyanka,您当然需要设置首字母字符串ToUpper()的第一部分:-),否则每次只发送一个小写字符串(除非第一个字母确实是大写字母-如您的示例所示)。
var myNewString = myOldString.UpperFirst();
// or simply referenced as myOldString.UpperFirst() where required
var initialString = "Hello hOW r u?";          

var res = string.Concat(initialString..ToUpper().Substring(0, 1), initialString.ToLower().Substring(1));
static class StringExtensions
{
    public static string ToLowerFirst(this string text)
        => !string.IsNullOrEmpty(text)
            ? $"{text.Substring(0, 1).ToLower()}{text.Substring(1)}"
            : text;
}
[TestClass]
public class StringExtensionsTests
{
    [TestMethod]
    public void ToLowerFirst_ShouldReturnCorrectValue()
        => "ABCD"
            .ToLowerFirst()
            .Should()
            .Be("aBCD");

    [TestMethod]
    public void ToLowerFirst_WhenStringIsEmpty_ShouldReturnCorrectValue()
        => string.Empty
            .ToLowerFirst()
            .Should()
            .Be(string.Empty);
}