以下のコードで置き換えてみましたが、「認識できないエスケープシーケンス」というエラーが出ます。
string originalPath = @"C:\project\temp\code";
string newPath = "";
newPath = originalPath.Replace("C:\project\temp", "C:\project\files");
以下のコードで置き換えてみましたが、「認識できないエスケープシーケンス」というエラーが出ます。
string originalPath = @"C:\project\temp\code";
string newPath = "";
newPath = originalPath.Replace("C:\project\temp", "C:\project\files");
文字列宣言で @ シンボルを使用すると、文字列はそのまま取得されます。実際、エスケープ シーケンスについて気にする必要はありません。
@ 記号を使用して 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");
バックスラッシュを含むすべての文字列リテラルには、二重のバススラッシュまたは引用符で囲まれた文字列の @ 記号が必要です。
「認識されないエスケープ シーケンス」は「\p」です。
これを試して:
newPath = originalPath.Replace(@"C:\project\temp", @"C:\project\files");
最初の文字列は「@」で、2 番目の文字列はそうではないため、二重の「/」を使用する必要があると思います。
うまくいかない場合は、 string.contains を使用して temp のインスタンスを見つけ、そこに \n を配置してから、文字列に files を追加することをお勧めします。
うまくいかない場合は、 regex を使用してみてください。