2017-03-28 4 views
3

補間された文字列で式を使用できますが、引用符をエスケープすることはできません。補間された文字列内のC#引用符がありません予期しない文字 0022

private string sth = $"{String.Join(\"\", Node.stringToType.Keys)}"; 


Error CS1056: Unexpected character `\0022' (CS1056) 
Error CS1525: Unexpected symbol `)', expecting `${', `:', or `}' (CS1525) 

UPDATE:あなたはそこに任意の区切り文字を挿入することができるように上記内側の式は

String.Join("", Node.stringToType.Keys) 

(2つのバックスラッシュが2つの二重引用符をエスケープするためだった)に相当するとメンターた

+0

あなたの最初の\は冗長である –

+1

あなたが本当に最初の場所で、ここでの文字列の補間が必要なのでしょうか? – bashis

+0

はい、それは長い正規表現ですので、どこでも使用していますので、 'String.Format'は適合しません。 – Adam

答えて

0

この

private string sth = $"{String.Join("\\", Node.stringToType.Keys)}"; 

に変更し、それをこの方法では、あまりにも

private string sth = $"{String.Join(@"\", Node.stringToType.Keys)}"; 
+0

実際に結合の最初の引数を空の文字列として扱います(" | " )。あなたがそれをエスケープする必要がないことは奇妙であり、 '@ 'も前の文字列の一部のように見えます。 – Adam

1

を働かなければならないあなたが

private string sth = $"{String.Join("\\", Node.stringToType.Keys)}"; 

としてそれを置く必要があるにしてください、{...}内のテキストはなければならないことを予告 C#コード

String.Join("\\", Node.stringToType.Keys) 

さらなる改善として、あなたは、すべての文字列補間をしたくない:

private string sth = String.Join("\\", Node.stringToType.Keys); 
関連する問題