繁体   English   中英

在C#中删除字符串开头的字符的最佳方法是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM