Mencuba untuk menukar Rentetan "sesuatu" kepada "sesuatu" menggunakan String#replaceAll() bermasalah kerana peranan dwi watak sebagai watak melarikan diri dalam kedua-dua rentetan dan biasa ungkapan.
Menggunakan ungkapan string.replaceAll("", "\") menghasilkan ralat "java.util.regex.PatternSyntaxException: Ralat dalaman yang tidak dijangka berhampiran indeks 1". Ini kerana ungkapan biasa menafsirkan yang pertama sebagai aksara melarikan diri untuk yang kedua .
Penyelesaian 1: Melarikan Diri Berganda Menggunakan Regex
Untuk melarikan diri daripada aksara dalam ungkapan biasa , ia mesti dilarikan dua kali. Ungkapan yang betul ialah:
string.replaceAll("\\", "\\\\");
Penyelesaian 2: Penggantian Aksara demi Aksara Menggunakan ganti
Jika penggantian aksara demi aksara yang tepat dikehendaki, ungkapan biasa tidak perlu. Kaedah String#replace() boleh digunakan sebaliknya:
string.replace("\", "\\");
Nota Tambahan: Melarikan diri untuk JavaScript
Jika rentetan bertujuan untuk digunakan dalam JavaScript konteks, kaedah StringEscapeUtils#escapeEcmaScript() disyorkan untuk merangkumi julat yang lebih luas aksara melarikan diri.
Atas ialah kandungan terperinci Bagaimana untuk Meloloskan Garis Garis Terbalik dengan Benar dalam Rentetan Java menggunakan `replaceAll` dan `replace`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!