Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#中删除字符串开头字符的最佳方法是什么?_C#_.net - Fatal编程技术网

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

在c#中删除字符串开头字符的最佳方法是什么?,c#,.net,C#,.net,考虑到我有这样一根弦: var myStr = @"\r\n test"; 删除字符(如\r和\n(回车符)和空字符)的最佳方法是什么 我能想到的一个办法是 var trimmedString = myStr.Replace("\r\n", "").Trim(); 最优雅的方法是什么?最好的答案是使用正则表达式 new Regex(@"(^\s+").Replace("\r\n BLah blah blah ","") 很难判断是要删除回车符和换行符,还是要删除文字字符串:“\r\n”

考虑到我有这样一根弦:

var myStr = @"\r\n test";
删除字符(如
\r
\n
(回车符)和空字符)的最佳方法是什么

我能想到的一个办法是

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

最优雅的方法是什么?

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

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

很难判断是要删除回车符和换行符,还是要删除文字字符串:
“\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", "");
如果确实要删除字符串开头的转义字符,则需要删除
@
符号,使其不再是字符串文字,然后可以使用字符串的方法:

var trimmedString = "\r\n  test".TrimStart();
TrimStart()
接受一个
char[]
参数,该参数详细说明要删除的特定字符。但是,如果不将任何参数传递给
TrimStart()
,它将自动删除字符串开头的空白字符


Fiddle

假设您希望从字符串中删除“原始”转义序列,您可以将基于正则表达式的方法概括如下:

var trimmed = Regex.Replace(original, @"^(\\[rntv]|\s)*", "");
这将删除字符串开头带有可选空格的逐字
\n
\r
\t
\v
序列。请注意,开头的
\
在逐字
@“…”
字符串文本中加倍,这意味着正则表达式将匹配转义序列,而不是它所表示的字符


如果要删除其特定字符,可以使用。如果它总是像
\r\n
这样的空白字符,那么您可以只使用
TrimStart()
而不使用任何参数
\r\n
是空白,因此
“\r\n mystring”.Trim()
将删除它。您正在创建的字符串前面有
\r\n
作为文本,而不是feed/carries返回。我发现挂接到C库非常优雅。非托管代码比托管代码酷得多。为什么要对字符串调用
ToString
?为什么要对字符串调用
newstring
?你为什么要修剪一根已经修剪过的绳子?这段代码毫无意义。我认为这不是一个有效的字符串构造函数。最好的答案当然不是regexIn什么意义上regexp不是从其他字符串的开头删除任意字符串的正确工具?与使用内置方法(
.TrimStart()
)相比,它是完全低效且不雅观的,因此被称为overkill。加上正则表达式往往很难阅读,所以我会在这样的简单任务中避免使用它们。我会继续说,因为OP使用的是
新字符串(@“\r\n test”)
字符串的前面没有空格,这相当于执行
“\\r\\n test”
这会导致字符串开头出现一个
\r\n
。你确定新字符串(@“\r\n test”)的语法正确吗?@狗仔队更新了我的答案,因为你的怀疑是正确的。