关于c#:为什么这个字符串不能正常转义?

Why won't this string escape properly?

我有一个字符串,如下所示,虽然它在到达冒号时会抛出一个错误,但我使用@来转义所有内容:

1
string vmListCommand = @"vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1":"$2}'";

删除@并使用\转义双引号:

1
string vmListCommand ="vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1":"$2}'";

你写道:

I have used @ to escape everything

江户记1〔0〕用来改变逃亡的巴哈维奥,而不是逃避一切。如果字符串的前缀是@,则忽略转义序列(\)。


有一个字符需要在文本字符串中转义。双引号"。如果不转义它,编译器如何知道哪个"是字符串的一部分,哪个终止字符串?

要在文本字符串中转义",只需将其加倍:

1
 @"vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1"":""$2}'"

或者,您可以切换到正常的字符串语法,并使用\进行转义。


您需要删除文本并转义

1
string vmListCommand ="vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1":"$2}'";

使用\在字符串中进行转义。

例子:

1
string str1 ="hello\";