2017-03-14 8 views
0

私は簡単な交換で苦労しました。そして、良い解決策が必要です。背景:serializer.Deserializeで直列化解除できるようにするには、\ "とこれらの文字列でエンコードされたxml文字列です。バックスラッシュの二重引用符を二重引用符で置き換えるにはどうすればよいですか?

バックスラッシュdoublequotを "\" hello \ ""のような二重引用符で置き換えて、文字列が "" hello ""になるようにします。テキストは長いので、バックスラッシュを削除することはできません。アドバイスをありがとう。 私はそれが実際に\"でエンコードされていない

string s= "\" teetete \""; 
string t; 
t = s.Replace("\"", @""""); 
+0

regex replace ?? –

+3

サンプルの文字列にバックスラッシュが含まれていない場合は、次のようになります: 'string s =" \\\ "teetete \\\" ";' –

+0

デバッガを探していると強く疑われますが、コンテキスト。実際にXMLの場合は、それを最初の文字列として扱いません。 –

答えて

1

サンプル文字列にバックスラッシュが含まれていないため、ダブルクォートをマスクするために使用しています。これは、最初と最後に1つに一つのバックスラッシュが含まれています

string s = "\\\" teetete \\\""; 

あなたは、単一の二重引用符でそれを交換したい場合:

string t = s.Replace("\\\"", "\""); 

あなたは、デバッガでルーペでクリックを見ています

enter image description here

enter image description here

:文字列の実際の値を表示するには
0

されているべきだと思います。これは文字通り、内容が" teetete "の文字列です。それを表示、または文字列をコンパイルするためには、あなたが持っている理由である、引用符をエスケープする必要があります。それにはバックスラッシュで見積もりを持っている文字列

string s = "\" teetete \""; 

、すなわち\"実際は次のようになります。ある

string s = "\\\" teetete \\\""; 

、リテラル"\のリテラルと\"ため\\の一組。あなたはことを交換したい場合は、それはあなたが書いたほとんど何:あなたが印刷している場合を除き、私は推測しているれ、"にあなたの文字列のいずれかの\"を変換します

string t = s.Replace("\\\"", "\""); 

は、あなたが実際に何をしたいですそれはいくつかのVB.NETコードには、その場合"\"\""がより適切でしょう。

0

あなたのやりたいことははっきりしませんが、ダブルクォート文字(デバッガでは\"と表示されています)を含むXML文字列があり、XMLパーサを許可するには"に置き換える必要があるようですそれを理解する。この場合、.Replace()への簡単な呼び出しで十分かもしれません(実際にはもっと複雑なもので解決する必要のあるエッジケースがあるとは思いますが)。