跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C Sharp 字符串修改
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= C#字符串修改 = == 介绍 == 在C#中,'''字符串(String)'''是不可变(immutable)的序列字符,这意味着一旦创建就不能更改。任何看似"修改"字符串的操作实际上都会创建一个新的字符串对象。理解这一点对高效处理文本数据至关重要。本指南将详细介绍C#中字符串修改的各种方法、性能考量及最佳实践。 == 基本字符串操作 == === 字符串连接 === 使用<code>+</code>运算符或<code>String.Concat</code>方法连接字符串: <syntaxhighlight lang="csharp"> string firstName = "John"; string lastName = "Doe"; string fullName = firstName + " " + lastName; // 方法1 string fullName2 = String.Concat(firstName, " ", lastName); // 方法2 Console.WriteLine(fullName); // 输出: John Doe Console.WriteLine(fullName2); // 输出: John Doe </syntaxhighlight> === 字符串插值 === C# 6.0引入的字符串插值更简洁: <syntaxhighlight lang="csharp"> int age = 30; string message = $"{firstName} {lastName} is {age} years old."; Console.WriteLine(message); // 输出: John Doe is 30 years old. </syntaxhighlight> == 常用修改方法 == === Substring - 提取子串 === <syntaxhighlight lang="csharp"> string original = "Hello World"; string sub = original.Substring(6, 5); // 从索引6开始取5个字符 Console.WriteLine(sub); // 输出: World </syntaxhighlight> === Replace - 替换内容 === <syntaxhighlight lang="csharp"> string text = "I like apples"; string newText = text.Replace("apples", "oranges"); Console.WriteLine(newText); // 输出: I like oranges </syntaxhighlight> === ToUpper/ToLower - 大小写转换 === <syntaxhighlight lang="csharp"> string mixedCase = "MiXeD CaSe"; Console.WriteLine(mixedCase.ToUpper()); // 输出: MIXED CASE Console.WriteLine(mixedCase.ToLower()); // 输出: mixed case </syntaxhighlight> === Trim - 去除空白 === <syntaxhighlight lang="csharp"> string padded = " text "; Console.WriteLine($"'{padded.Trim()}'"); // 输出: 'text' Console.WriteLine($"'{padded.TrimStart()}'"); // 输出: 'text ' Console.WriteLine($"'{padded.TrimEnd()}'"); // 输出: ' text' </syntaxhighlight> == 高级字符串处理 == === StringBuilder 类 === 对于频繁修改字符串的场景,应使用<code>StringBuilder</code>避免创建多个临时对象: <syntaxhighlight lang="csharp"> using System.Text; StringBuilder sb = new StringBuilder(); sb.Append("Hello"); sb.Append(" "); sb.Append("World"); sb.AppendLine("!"); sb.AppendFormat("Current time: {0}", DateTime.Now); string result = sb.ToString(); Console.WriteLine(result); /* 输出: Hello World! Current time: [当前时间] */ </syntaxhighlight> === 字符串分割与合并 === <syntaxhighlight lang="csharp"> string names = "John,Mary,Robert"; string[] nameArray = names.Split(','); // 分割 string joined = String.Join("; ", nameArray); // 合并 Console.WriteLine(joined); // 输出: John; Mary; Robert </syntaxhighlight> == 性能考量 == 字符串不可变性导致频繁修改时性能下降。比较不同方法的性能差异: <mermaid> gantt title 字符串操作性能比较(操作10000次) dateFormat X axisFormat %s section 直接连接 操作 : 0, 5000 section StringBuilder 操作 : 0, 100 section String.Concat 操作 : 0, 2000 </mermaid> 数学公式表示内存消耗增长:<math>O(n^2)</math>(直接连接) vs <math>O(n)</math>(StringBuilder) == 实际应用案例 == === 用户输入处理 === <syntaxhighlight lang="csharp"> string userInput = " UsERnAmE "; string processed = userInput.Trim().ToLower(); Console.WriteLine(processed); // 输出: username </syntaxhighlight> === 动态SQL查询构建 === <syntaxhighlight lang="csharp"> StringBuilder sql = new StringBuilder(); sql.Append("SELECT * FROM Users WHERE "); sql.AppendFormat("Name = '{0}' AND ", name); sql.AppendFormat("Age > {0}", minAge); // 比直接连接更安全高效 </syntaxhighlight> == 最佳实践 == 1. 少量修改使用字符串方法 2. 大量或循环中修改使用StringBuilder 3. 注意文化敏感性(使用CultureInfo参数) 4. 避免在热路径中频繁分配字符串 == 参见 == * [[C#字符串基础]] * [[C#正则表达式]] * [[.NET字符串处理内部机制]] [[Category:编程语言]] [[Category:C Sharp]] [[Category:C Sharp 字符串]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)