Rumah >Java >javaTutorial >Bagaimana untuk Menyahi Huruf Rentetan Java dengan Betul, Mengendalikan Semua Urutan Melarikan Diri?

Bagaimana untuk Menyahi Huruf Rentetan Java dengan Betul, Mengendalikan Semua Urutan Melarikan Diri?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 12:29:10816semak imbas

How to Properly Unescape Java String Literals, Handling All Escape Sequences?

Bagaimanakah untuk Menyingkirkan Java String Literal dalam Java?

Masalahnya

Timbul keperluan untuk mengekstrak literal rentetan daripada kod sumber Java dan menghantarnya kepada fungsi yang menerima rentetan biasa. Menyahescape rentetan literal adalah penting, bermakna menukar aksara seperti n dan \, antara lain, kepada bentuk yang dimaksudkan.

Fungsi yang Tersedia untuk Unescaping Strings

  • org.apache.commons.lang.StringEscapeUtils.unescapeJava()

Walau bagaimanapun, fungsi ini mempunyai beberapa batasan:

  • Mengabaikan perwakilan aksara nol ( )
  • Tidak mengendalikan octal escape
  • Gagal mengendalikan escape yang diterima oleh Java regex (cth., a, e, cX)
  • Kurang sokongan untuk mata kod Unicode dan Pengendalian aksara UTF-16

Penyelesaian Tersuai: unescape_perl_string()

Fungsi tersuai, unescape_perl_string(), dicadangkan sebagai alternatif:

  • Mengendalikan semua keluaran rentetan Java: r, n, f, t, (antara lain).
  • Menyokong perlapanan melarikan diri: , N, NN dan lain-lain.
  • Termasuk melarikan diri tambahan: ?cX (aksara kawalan), ?x{XXX} (heksa melarikan diri dengan pendakap).
  • Menghuraikan keluaran regex Java: [JAVA IDIOT PREPROCESSOR]uXXXX.

Butiran Pelaksanaan

Fungsi unescape_perl_string():

  • Lelaran melalui rentetan input, mengendalikan urutan melarikan diri berdasarkan aksara berikut .
  • Sebagai contoh, r ditukar kepada pemulangan pengangkutan, n ke baris baharu.
  • Aksara kawalan disokong, dengan cX mewakili hasil XOR logik titik kod aksara itu dengan '@'.
  • Larian heksadesimal xXX dan x{XXX} adalah betul ditafsirkan.
  • Titik kod Unikod diiktiraf dan ditukar kepada aksaranya perwakilan.
  • Larian yang belum selesai atau tidak sah dibenderakan dan dilaporkan sebagai ralat.

Atas ialah kandungan terperinci Bagaimana untuk Menyahi Huruf Rentetan Java dengan Betul, Mengendalikan Semua Urutan Melarikan Diri?. 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