[英]What is the best way to remove characters at start of a string in c#?
考虑到我有一个这样的字符串:
var myStr = @"\r\n test";
删除\\r
和\\n
(回车符)和空字符等字符的最佳方法是什么
我能想到的一种方法是
var trimmedString = myStr.Replace("\r\n", "").Trim();
最优雅的方法是什么?
很难说是要删除回车符和换行符,还是要删除文字字符串: "\\r\\n"
。
您发布的代码:
new string (@"\r\n test")
甚至不是有效的语法。 如果要使用字符串文字,则语法为:
var someString = @"\r\n some value";
@
表示您实际上在输出中包含字符串: "\\r\\n"
,这意味着它将不会输出转义字符\\r\\n
,即回车符和换行符。
如果您想删除特定的字符串 "\\r\\n"
,则可以像以前一样使用String.Replace
,我已经清理了一下代码并删除了一些冗余:
var trimmedString = @"\r\n test".Replace(@"\r\n", "");
如果您实际上想从字符串的开头删除转义字符 ,则需要删除@
符号,使其不再是字符串文字,那么可以使用字符串的TrimStart()
方法:
var trimmedString = "\r\n test".TrimStart();
TrimStart()
接受char[]
参数,该参数详细说明了要删除的特定字符。 但是,如果不将任何参数传递给TrimStart()
,它将自动从字符串的开头删除空格字符。
在这里摆弄
假设您希望从字符串中删除“原始”转义序列,则可以如下概括基于正则表达式的方法:
var trimmed = Regex.Replace(original, @"^(\\[rntv]|\s)*", "");
这会删除字符串开头的逐字\\n
, \\r
, \\t
和\\v
序列,并带有可选的空格。 请注意,开头的\\
在逐字@"..."
字符串文字内加倍,这意味着正则表达式将匹配转义序列,而不是它表示的字符。
最好的答案是使用正则表达式。
new Regex(@"(^\s+").Replace("\r\n BLah blah blah ","")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.