0

以下のコードで置き換えてみましたが、「認識できないエスケープシーケンス」というエラーが出ます。

string originalPath = @"C:\project\temp\code";
string newPath = "";

newPath = originalPath.Replace("C:\project\temp", "C:\project\files");
4

3 に答える 3

1

文字列宣言で @ シンボルを使用すると、文字列はそのまま取得されます。実際、エスケープ シーケンスについて気にする必要はありません。

@ 記号を使用して OriginalPath 変数を作成したため、次のようになります。

originalPath = "C:\project\temp\code";

したがって、次の両方のステートメントが有効です。

1.string originalPath = @"C:\project\temp\code";
2.string originalPath = "C:\\project\\temp\\code";

したがって、文字列を置き換えている間は、次のいずれかの方法を使用できます。

解決策 1:
newPath = originalPath.Replace("C:\\project\\temp","C:\\project\\files");

解決策 2:

newPath = originalPath.Replace(@"C:\project\temp", @"C:\project\files");

于 2013-11-07T02:37:27.407 に答える
1

バックスラッシュを含むすべての文字列リテラルには、二重のバススラッシュまたは引用符で囲まれた文字列の @ 記号が必要です。

「認識されないエスケープ シーケンス」は「\p」です。

これを試して:

newPath = originalPath.Replace(@"C:\project\temp", @"C:\project\files");
于 2013-11-07T02:13:02.627 に答える
1

最初の文字列は「@」で、2 番目の文字列はそうではないため、二重の「/」を使用する必要があると思います。

うまくいかない場合は、 string.contains を使用して temp のインスタンスを見つけ、そこに \n を配置してから、文字列に files を追加することをお勧めします。

うまくいかない場合は、 regex を使用してみてください。

于 2013-11-07T02:15:37.010 に答える