为什么这个字符串不能正常逃脱?

时间:2012-07-28 13:07:42

标签: c# .net windows

我有一个字符串如下,虽然它到达冒号时会抛出一个错误,我用@来逃避一切:

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

4 个答案:

答案 0 :(得分:3)

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

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

您写道:

  

我用@来逃避一切

@用于更改逃避行为,而不是逃避一切。如果字符串以@为前缀,则忽略转义序列(\)。

答案 1 :(得分:1)

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

示例:

string str1 ="hello\\";

答案 2 :(得分:1)

您需要删除文字并转义

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

答案 3 :(得分:1)

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

要转义文字字符串中的",只需加倍:

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

或者,您可以切换到普通字符串语法,并使用\转义。