web-dev-qa-db-ja.com

c#文字を置換します

XmlReaderを介して解析しようとしているXML文字列が送信され、\"文字を削除しようとしています。

私はもう試した

.Replace(@"\", "")
.Replace("\\''", "''")
.Replace("\\''", "\"")

プラス他のいくつかの方法。

何か案は?

25
Tim Shults

次のように試してみましたか:

string text = GetTextFromSomewhere();
text.Replace("\\", "");
text.Replace("\"", "");

?もしそうなら、それは問題です-Replaceoriginal文字列を変更せず、置換が実行されたnew文字列を返します... dが欲しい:

string text = GetTextFromSomewhere();
text = text.Replace("\\", "").Replace("\"", "");

これは各バックスラッシュを置き換えることに注意してくださいand各二重引用符; pair "バックスラッシュに続く二重引用符"のみを置き換えたい場合は、次のようにします。

string text = GetTextFromSomewhere();
text = text.Replace("\\\"", "");

(コメントで述べたように、これは文字列が.NETで不変であるためです-何らかの方法で文字列オブジェクトを取得すると、その文字列は常に同じ内容になります。differentへの参照を割り当てることができます=文字列を変数に変更しますが、実際には既存の文字列の内容を変更するわけではありません。)

55
Jon Skeet

.NET Framework 4およびMVCでは、これが機能する唯一の表現です。

Replace(@"""","")

どんな組み合わせでもバックスラッシュを使用してもうまくいきませんでした...

8
SonicVader

このようにしてみてください:

Replace("\\\"","");

これにより、\"の出現が空の文字列に置き換えられます。

例:

string t = "\\\"the dog is my friend\\\"";
t = t.Replace("\\\"","");

これにより、次の結果が得られます。

the dog is my friend
5
dcp
_\ => \\ and " => \"
_

Replace("\\\"","")

1
malinois

置換(@ "\" ""、 "")

escapedouble-quotes には、逐語的文字列内で二重二重引用符を使用する必要があります。

0
Greg

これらの文字はどこで発生しますか?たとえばメモ帳でXMLデータを調べると、それらが表示されますか?または、デバッガでXMLデータを調べるときに表示されますか。後者の場合、"文字のエスケープ文字であるため、実際のXMLデータの一部です。

0
Fredrik Mörk