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

时间:2018-04-18 18:29:00

标签: c# .net

考虑到我有这样的字符串:

var myStr = @"\r\n test";

删除\r\n(回车符)和空字符等字符的最佳方法是什么

我能想到的一种方式是

var trimmedString = myStr.Replace("\r\n", "").Trim();

最优雅的方法是什么?

3 个答案:

答案 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序列。请注意,开头的\在逐字@"..."字符串文字中加倍,这意味着正则表达式将匹配转义序列,而不是它所代表的字符。

Demo.

答案 2 :(得分:-3)

你最好的答案是使用正则表达式。

new Regex(@"(^\s+").Replace("\r\n BLah blah blah   ","")