2

現在、C# コード内の文字列から不要な文字を削除しようとしています。

\ 文字の削除ですが、削除しすぎています。以下は文字列の例です

"[{ \"attributes\" : { \"SR_ID\" : \"200003172375\",
\"Fath_SR\" : \"EH0036\", \"UPRN\" : \"100100024250\",
\"Eastings\ " : \"260376\"、\"Northings\" : \"358150\"、
\"Disgrifiad\" : \"テスト\"、\"日付\" : \"25/01/2012\"、
\"時間\" : \"11:36\" }, \"ジオメトリ\" : { \"x\" : 270315, \"y\" : 345828 } }]"

\ 文字を削除しようとしていますが、" はそのままにしておきます。 \ を削除できた唯一の方法は、

 sReturn = sReturn.Replace("\"",String.Empty);

ただし、これにより " 文字が削除されます。

以下の2つの試みを試しましたが、何らかの理由で、言われたとおりにしたくありません!

 sReturn = sReturn.Replace(@"\",String.Empty);
 sReturn = sReturn.Replace("\\",String.Empty);

\" を " に置き換える方法はありますか?

4

5 に答える 5

1

多分:

sReturn = sReturn.Replace(@"\", "");

逐語的な文字列リテラルを使用すると、\charを使用できます。

編集:私はあなたがすでにそれを試したことをちょうど見ただけです。これは、VisualStudioでの表示の問題にすぎません。

于 2013-01-25T16:37:28.423 に答える
1

\"エスケープされた文字列シーケンスです。実際の文字列は引用符 (") だけですが、エスケープされていることを示すためにバックスラッシュが含まれており、引用符 (") は実際には文字列の終わりではありません (これは文字列の一部であり、末尾を定義する文字ではありません)。ストリング)。

文字列をコンソールに出力するか、メッセージ ボックスに表示してみてください。これにより、エスケープ文字列を表示せずに文字列が実際に何であるかが表示されます。

于 2013-01-25T16:39:10.443 に答える
1

文字列に実際\"に文字があり、エスケープされた表現だけを見ているのではないと仮定すると、次のように簡単に実行できます。

sReturn = sReturn.Replace("\\\"","\"");

可能なすべての種類のエスケープ シーケンスをエスケープ解除する場合は、次を使用します。

sReturn = Regex.Unescape(sReturn);

しかし、他の人が指摘しているように、おそらくこれらの文字は実際にはなく、ビジュアルスタジオデバッガーなどのエスケープされた形式で表示される表現を見ているだけです。

于 2013-01-25T16:43:43.630 に答える
0

実際、これらの文字 (\) は \" (") です。文字列を印刷すると、「\」文字がないことがわかります。ですから、そのままにしておくことができます。これらの空間情報を他の空間情報と比較したい場合、問題はありません。

于 2013-01-25T16:41:29.977 に答える
0

スラッシュ ( \ ) は、次の文字が文字列の一部であることをコンパイラに知らせるエスケープ文字です。そうしないと、コンパイラが終了引用符に到達したときに文字列が終了するため、これは重要な表記法です。実際、別のコンパイラ構成で文字列を調べると (たとえば、VB.Net プロジェクトのライブラリを調べた場合)、そこにスラッシュは表示されません。

于 2013-01-25T16:40:06.140 に答える