22 c#
如何将文本中的第一个字母设置为大写?
例:
it is a text. = It is a text.
Run Code Online (Sandbox Code Playgroud)
vik*_*tra 44
public static string ToUpperFirstLetter(this string source)
{
if (string.IsNullOrEmpty(source))
return string.Empty;
// convert to char array of the string
char[] letters = source.ToCharArray();
// upper case the first char
letters[0] = char.ToUpper(letters[0]);
// return the array made of the new char array
return new string(letters);
}
Run Code Online (Sandbox Code Playgroud)
pol*_*nts 37
它会是这样的:
// precondition: before must not be an empty string
String after = before.Substring(0, 1).ToUpper() + before.Substring(1);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 18
polygenelubricants的答案适用于大多数情况,但您可能需要考虑文化问题.您是否希望在当前文化或特定文化中以文化不变的方式利用它?例如,它可以在土耳其产生重大影响.所以你可能想要考虑:
CultureInfo culture = ...;
text = char.ToUpper(text[0], culture) + text.Substring(1);
Run Code Online (Sandbox Code Playgroud)
或者如果您更喜欢以下方法String
:
CultureInfo culture = ...;
text = text.Substring(0, 1).ToUpper(culture) + text.Substring(1);
Run Code Online (Sandbox Code Playgroud)
culture
可能在哪里CultureInfo.InvariantCulture
,或当前的文化等
有关此问题的更多信息,请参阅土耳其测试.
我使用这个变体:
private string FirstLetterCapital(string str)
{
return Char.ToUpper(str[0]) + str.Remove(0, 1);
}
Run Code Online (Sandbox Code Playgroud)
如果您确定该str
变量有效(绝不是空字符串或 null),请尝试:
str = Char.ToUpper(str[0]) + str[1..];
Run Code Online (Sandbox Code Playgroud)
与使用 Substring 的其他解决方案不同,该解决方案不进行额外的字符串分配。这个例子基本上.char
与ReadOnlySpan<char>
更新
实际上str[1..]
返回字符串。根据文档,它在内部使用 Substring() 来执行此操作。https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1831
为了使其免于分配,请使用以下行:
str = string.Concat(new ReadOnlySpan<char>(Char.ToUpper(str[0])), str.AsSpan()[1..]);
Run Code Online (Sandbox Code Playgroud)