为什么这个字符串不能正确地转义?
问题描述:
我有一个字符串,如下所示,虽然当它到达结肠抛出一个错误,我已经使用@逃避一切:为什么这个字符串不能正确地转义?
string vmListCommand = @"vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1":"$2}'";
答
使用\
删除@
和逃避双引号:
string vmListCommand = "vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1\":\"$2}'";
您写道:
我用@逃避一切
@
用于更改转义bahaviour,而不是转义所有。如果一个字符串以@
为前缀,则忽略转义序列(\
)。
答
在您的字符串中使用\
进行换码。
例子:
string str1 ="hello\\";
答
您需要删除的文字和逃生
string vmListCommand = "vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1\":\"$2}'";
答
有需要在文字字符串进行转义一个字符。双引号"
。如果你不逃避它,编译器如何知道哪个"
是字符串的一部分,以及哪个字符串终止?
要在文本字符串逃脱"
,只需双击它:
@"vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1"":""$2}'"
另外,您可以切换到正常的字符串语法,并与\
逃脱。
如果你想了解更多关于'@ string'的内容,请看看[@(at)sign in file path/string](http://stackoverflow.com/questions/5179389/at-sign-in-文件路径字符串)和[在C#中字符串前面的@是什么?](http://stackoverflow.com/questions/556133/whats-the-front-of-a-string-in-c ) – Zbigniew 2012-07-28 13:17:31