Rumah  >  Artikel  >  Java  >  Bagaimana untuk Meloloskan Garis Garis Terbalik dengan Benar dalam Rentetan Java menggunakan `replaceAll` dan `replace`?

Bagaimana untuk Meloloskan Garis Garis Terbalik dengan Benar dalam Rentetan Java menggunakan `replaceAll` dan `replace`?

DDD
DDDasal
2024-11-27 12:14:10395semak imbas

How to Properly Escape Backslashes in Java Strings using `replaceAll` and `replace`?

Melepaskan Garis Segaris Belakang dalam Rentetan menggunakan replaceAll

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn