2

そのため、文字列からエスケープされたバックスラッシュを削除する必要があります (私の場合、単に "C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE\" のようなパス)。

交換するには、次のことを試しました。

String openWith = "C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE";

string newString = openWith.Replace(@"\\", @"\");

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

openWith = Regex.Replace(openWith,"\\\\","\\");

しかし、これらのどれも機能しません!! これがなぜなのか、誰かが私に説明できますか?

前もって感謝します!

4

2 に答える 2

5

文字列に二重のバックスラッシュが含まれていません。

の最初のバックスラッシュ"C:\\"は、C# コンパイラによって解釈されるエスケープ文字です。ただし、実行時には、文字列には単一のバックスラッシュのみが含まれます。文字列の値を表示することで、これを証明できます。

String openWith = "C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE";
Console.WriteLine(openWith);

結果:

C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE

出力にはバックスラッシュが 1 つしかないことに注意してください。

オンラインでの動作を確認してください: ideone

于 2012-08-28T20:16:43.010 に答える
0

質問に入力したパスからバック スラッシュを削除する必要はありません。

Windows OS で有効な IO パスを視覚できるのは、バックスラッシュ\\が 2 つあるパスだけです。

于 2012-08-28T20:17:16.237 に答える