Rumah >Java >javaTutorial >Mengapa Kaedah `split()` Java Gagal Apabila Memisahkan Rentetan dengan '|' dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Kaedah `split()` Java Gagal Apabila Memisahkan Rentetan dengan '|' dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 06:42:11897semak imbas

Why Does Java's `split()` Method Fail When Splitting Strings by

Memisahkan Rentetan Java dengan Simbol Paip: Menyelesaikan Masalah Kaedah Split() Tidak Berkesan

Kaedah Java split() , apabila digunakan untuk membahagikan rentetan dengan paip simbol ("|"), boleh menghasilkan hasil yang tidak dijangka, seperti yang dilihat dalam yang berikut contoh:

public static void main(String[] args) {
    String test = "A|B|C||D";

    String[] result = test.split("|");

    for (String s : result) {
        System.out.println(">"+s+"<");
    }
}

Daripada output yang dimaksudkan:

>A<
>B<
>C<
><
>D<

kod menghasilkan:

><
>A<
>|
>B<
>|
>C<
>|
>|
>D<

Mengapa ini berlaku?

Masalahnya terletak pada sintaks kaedah split(). Simbol paip, "|", mempunyai kepentingan istimewa dalam ungkapan biasa, di mana ia mewakili pengendali "ATAU". Untuk menggunakan simbol paip secara literal sebagai pembatas, ia mesti dilepaskan menggunakan garis miring ke belakang ().

Untuk meminda kod, seseorang boleh menggunakan pendekatan berikut:

// Option 1: Escaping the pipe symbol
String[] result = test.split("\|");
// Option 2: Utilizing Pattern.quote()
import java.util.regex.Pattern;
String[] result = test.split(Pattern.quote("|"));

Dengan melepaskan simbol paip, anda menekan status istimewanya dalam ungkapan biasa, membolehkan ia ditafsirkan sebagai pembatas literal.

Atas ialah kandungan terperinci Mengapa Kaedah `split()` Java Gagal Apabila Memisahkan Rentetan dengan '|' dan Bagaimana Saya Boleh Membetulkannya?. 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