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