0

次のような文字列があります。コロンに到達するとエラーがスローされますが、@を使用してすべてをエスケープしました。

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

4 に答える 4

2

:を使用して二重引用符を削除@してエスケープします。\

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

あなたが書いた:

私はすべてをエスケープするために@を使用しました

@すべてを逃れるためではなく、逃げる行動を変えるために使用されます。文字列の前に接頭辞が付いている場合、@エスケープシーケンス(\)は無視されます。

于 2012-07-28T13:08:49.973 に答える
1

\文字列のエスケープに使用します。

例:

string str1 ="hello\\";
于 2012-07-28T13:09:46.413 に答える
1

リテラルを削除してエスケープする必要があります

string vmListCommand = "vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1\":\"$2}'";
于 2012-07-28T13:12:12.410 に答える
1

リテラル文字列でエスケープする必要がある文字が1つあります。二重引用符"。エスケープしない場合、コンパイラ"は、文字列の一部であり、文字列を終了するものをどのように知るのでしょうか。

リテラル文字列でaをエスケープする"には、単純に2倍にします。

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

または、通常の文字列構文に切り替えて、。でエスケープすることもできます\

于 2012-07-28T13:20:47.463 に答える