在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”)的语法正确吗?@狗仔队更新了我的答案,因为你的怀疑是正确的。