2016-11-16 12 views
-1

これは何度も答えられているようです。私のチームと私は過去1時間に何の幸運もなく多くのソリューションを試しました。 c:\ testを含むデータベース駆動の文字列値があり、円弧を\\に置き換えてc:\\testに置き換えたいとします。データベース駆動型文字列内の単一のバックスラッシュを置き換えます。

.Replace、Regex.Replace、.Splitを使って文字列を再構築しようとしましたが、forループと部分文字列を使って各文字を調べてみました。コロンを越えると、次の文字は "\ t"と表示されます。

提出する前に解決策を試してください。既に、スタックオーバーフローに関する数多くの提案を含め、さまざまな方法を試しています。

私たちが手作業で文字列をpath = @ "c:\ test"のようにリテラルとして設定すると、replaceを使っても問題ありません。

解決策はエスケープ文字を処理しない文字列を作成することだと思いますが、その実装方法はわかりません。

+0

はあなたの試してみました「:\\テストc」をお持ちですか? –

+0

この奇妙なことが他の誰かに起こった場合。これは「C:\ temp」のパスが使用されたためにのみ発生しました。文字列をデフォルトで "c:\ logs"に設定していた場合、無効なエスケープが与えられていましたが、\ tはAlexeiが述べたようにタブであるため、文字列を受け入れましたが、 "c: emp" – CubeRoot

答えて

0

あなたの文字列がすでにあなたはおそらく"\\t"と交換する必要がある「タブ」の文字('\t')が含まれてような音:

var result = "c:\test".Replace("\t", "\\t"); 
+0

私は、コンソールアプリケーションからargsを使って値を設定すると、文字列を自動的にエスケープすることに気付きました。あなたは、\ tがタブとして扱われることは間違いありません。私はちょっと困惑していて、そのように人身っぽくなっていて、エスケープされたバックスラッシュに変換されていないのです。 c:\ tempをc:\ pathに変更しようとすると、文字列は\ pが有効なエスケープではないというエラーをスローします。 – CubeRoot

関連する問題