次のような文字列があります。コロンに到達するとエラーがスローされますが、@を使用してすべてをエスケープしました。
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}'";
あなたが書いた:
私はすべてをエスケープするために@を使用しました
@
すべてを逃れるためではなく、逃げる行動を変えるために使用されます。文字列の前に接頭辞が付いている場合、@
エスケープシーケンス(\
)は無視されます。
\
文字列のエスケープに使用します。
例:
string str1 ="hello\\";
リテラルを削除してエスケープする必要があります
string vmListCommand = "vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1\":\"$2}'";
リテラル文字列でエスケープする必要がある文字が1つあります。二重引用符"
。エスケープしない場合、コンパイラ"
は、文字列の一部であり、文字列を終了するものをどのように知るのでしょうか。
リテラル文字列でaをエスケープする"
には、単純に2倍にします。
@"vim-cmd vmsvc/getallvms | sed '1d' | awk '{if ($1 > 0) print $1"":""$2}'"
または、通常の文字列構文に切り替えて、。でエスケープすることもできます\
。