パス内で単一のスラッシュをダブルスラッシュに置き換えますが、ダブルスラッシュは影響を受けません。 私は、次の試してみました:スラッシュを置き換える方法
string oldPath = "\\new\new1\new2\";
string newPath = old.replace("\\", "\\\\");
私の予想結果は次のようにnewPath
があるということである:
\n
が新しい行として解釈されているためである
"\\new\\new1\\new2\\"
パス内で単一のスラッシュをダブルスラッシュに置き換えますが、ダブルスラッシュは影響を受けません。 私は、次の試してみました:スラッシュを置き換える方法
string oldPath = "\\new\new1\new2\";
string newPath = old.replace("\\", "\\\\");
私の予想結果は次のようにnewPath
があるということである:
\n
が新しい行として解釈されているためである
"\\new\\new1\\new2\\"
。もう一度エスケープしてください。
とにかく、String
の代わりにjava.nio.file.Path
を使用して、ファイルとディレクトリパスを操作してください。また、ファイルセパレータ\
\ /
を使用する場合は、System.getProperty("file.separator")
を使用してください。 UNIXベースのシステムで
/
次のとおりです。すべての
/**
* Succeeds on Unix-based systems. On Windows, replace test Path and expected Path file separators
* with backslash(es).
*/
@Test
public void test() {
final Path oldPath = Paths.get("//new/new1/new2");
final String newPath = oldPath.toString().replace(System.getProperty("file.separator"),
System.getProperty("file.separator") + System.getProperty("file.separator"));
System.out.println(System.getProperty("file.separator"));
System.out.println(newPath);
assertEquals("//new//new1//new2", newPath);
}
良い答え。唯一のことは、 'newPath'は' //// new // new1 // new2'です。 –
私は思っていません、テストケースを実行;) – kerner1000
私はコメントを書いた前にしました。テストではありませんが、 'newPath'は' \\\\ new \\ new1 \\ new2'としてコンソールに表示されます。 –
まず、あなたのoldPath
はJavaで有効な文字列ではありません。それは特殊文字である\
で終わり、何かが続く必要があります。最後に\\
であると仮定しましょう。
この他にも、コメントに記載されている@Jensのように、\n
は改行記号なので、javaは文字列を\new(new_line)ew1(new_line)ew2\
と認識します。あなたの結果はが\\new\\new1\\new2\\
としてを表示するようにしたい場合
さて、あなたはreplace
方法の順序は、その場合に重要であることを、この
String newPath = old.replace("\\", "\\\\").replace("\n", "\\\\n");
お知らせを使用する必要があります。
どのようなエラーが発生していますか? – gprathour
実際の実行可能コード、特に入力文字列を表示してください。 *文字列が実際に '\ n'を含んでいれば、置換する' '\'はありません。 – luk2302
'\ n'は改行文字です。あなたの文字列は\ newNEWのようですLINEew1NEW LINEew2 – Jens