C#中移除字符串起始字符及换行空白字符的最优优雅实现
问题1:在C#中移除字符串起始位置字符的最佳方式是什么?
这得看你具体的需求场景,不同情况对应最顺手的方案:
如果要移除开头所有空白字符(空格、制表符、换行符这类),直接用内置的
TrimStart()就够了,简洁又高效:string myStr = " Hello C#"; string result = myStr.TrimStart(); // 结果:"Hello C#"如果要移除开头的特定单个字符(比如
#、$),给TrimStart()传对应字符就行:string myStr = "###Code Snippet"; string result = myStr.TrimStart('#'); // 结果:"Code Snippet"如果要移除开头的多种特定字符,传一个字符数组就搞定:
string myStr = "$@%Hello World"; string result = myStr.TrimStart(new char[] {'$', '@', '%'}); // 结果:"Hello World"如果只是要移除第一个字符(不管是什么),用
Substring(1),但记得先判断字符串非空,避免抛异常:string myStr = "TestString"; string result = !string.IsNullOrEmpty(myStr) ? myStr.Substring(1) : myStr; // 结果:"estString"
问题2:移除字符串中的\r、\n及空白字符的优雅实现方式
你的原始方法已经能用,但可以根据需求优化得更简洁:
场景1:只移除首尾的\r、\n和空白字符
直接用Trim()的重载,传入要移除的字符集合,一步到位,比先替换再Trim更高效:
var myStr = @"\r\n test"; // 注意:如果你的@"\r\n"是字面量的"\r\n"四个字符(不是转义后的回车换行),要把'\\'也加入移除列表 var trimmedString = myStr.Trim(new[] {'\r', '\n', ' ', '\t', '\\'});
场景2:移除所有位置的\r、\n和空白字符(包括中间的)
用正则表达式替换最优雅,一行代码搞定:
using System.Text.RegularExpressions; var myStr = @"\r\n test"; // 正则匹配\r、\n、反斜杠(因为字面量的\r\n包含'\')和所有空白字符,替换为空 var cleanedString = Regex.Replace(myStr, @"[\r\n\\\s]", "");
如果你的字符串里的\r\n是实际的回车换行字符(不是字面量的四个字符),正则可以简化为@"[\r\n\s]",不用匹配反斜杠。
内容的提问来源于stack exchange,提问作者now he who must not be named.
相关产品推荐
相关产品推荐

