高效实现C#字符串首字母大写
引言
将字符串的首字母大写是许多编程应用中的常见任务。为了优化性能,选择高效的方法至关重要。本文探讨了在C#中实现首字母大写功能的几种方法,并着重分析了它们的性能差异。
代码示例
C# 8,.NET Core 3.0 或 .NET Standard 2.1
<code class="language-csharp">public static string FirstCharToUpper(this string input) => input switch { null => throw new ArgumentNullException(nameof(input)), "" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)), _ => string.Concat(input[0].ToString().ToUpper(), input.AsSpan(1)) };</code>
C# 8
<code class="language-csharp">public static string FirstCharToUpper(this string input) => input switch { null => throw new ArgumentNullException(nameof(input)), "" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)), _ => input[0].ToString().ToUpper() + input.Substring(1) };</code>
C# 7
<code class="language-csharp">public static string FirstCharToUpper(this string input) { switch (input) { case null: throw new ArgumentNullException(nameof(input)); case "": throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)); default: return input[0].ToString().ToUpper() + input.Substring(1); } }</code>
旧版本 (不推荐,性能较差)
<code class="language-csharp">public static string FirstCharToUpper(string input) { if (String.IsNullOrEmpty(input)) throw new ArgumentException("ARGH!"); return input.First().ToString().ToUpper() + String.Join("", input.Skip(1)); }</code>
<code class="language-csharp">public static string FirstCharToUpper(string input) { if (String.IsNullOrEmpty(input)) throw new ArgumentException("ARGH!"); return input.First().ToString().ToUpper() + input.Substring(1); }</code>
性能考量
在这些代码片段中,内存分配最少且字符串操作效率最高的方法具有最佳性能。第一个解决方案使用了 .NET Core 3.0 或 .NET Standard 2.1 中的 ReadonlySpan<char>
,与其他方法相比,它提供了更优越的性能。
以上是如何在 C# 中将字符串的第一个字母大写并获得最佳性能?的详细内容。更多信息请关注PHP中文网其他相关文章!