考虑到我有这样的字符串:
var myStr = @"\r\n test";
删除\r
和\n
(回车符)和空字符等字符的最佳方法是什么
我能想到的一种方式是
var trimmedString = myStr.Replace("\r\n", "").Trim();
最优雅的方法是什么?
答案 0 :(得分:3)
很难判断您是否要删除回车符和换行符,或者是否要删除文字字符串:"\r\n"
。
您发布的代码:
new string (@"\r\n test")
甚至不是有效的语法。如果你想要一个字符串文字,语法是:
var someString = @"\r\n some value";
@
表示您字面上包含输出中的字符串:"\r\n"
,这意味着它不会输出转义字符\r\n
,这是回车和换行。
如果您要删除特定的字符串 "\r\n"
,您可以像使用String.Replace
那样使用,我已经清理了一些代码并删除了一些冗余:< / p>
var trimmedString = @"\r\n test".Replace(@"\r\n", "");
如果您确实要从字符串的开头删除转义字符,则需要删除@
符号,使其不再是字符串文字,然后您可以使用{ {3}}字符串的方法:
var trimmedString = "\r\n test".TrimStart();
TrimStart()
接受char[]
参数,该参数详细说明了您要删除的特定字符。但是,如果您未将任何参数传递给TrimStart()
,它将自动从字符串的开头删除空格字符。
小提琴TrimStart()
答案 1 :(得分:2)
假设您希望从字符串中删除“原始”转义序列,可以按如下方式推广基于正则表达式的方法:
var trimmed = Regex.Replace(original, @"^(\\[rntv]|\s)*", "");
这会删除字符串开头的可选空格的逐字\n
,\r
,\t
和\v
序列。请注意,开头的\
在逐字@"..."
字符串文字中加倍,这意味着正则表达式将匹配转义序列,而不是它所代表的字符。
答案 2 :(得分:-3)
你最好的答案是使用正则表达式。
new Regex(@"(^\s+").Replace("\r\n BLah blah blah ","")