Memecah string dengan karakter pipa ("|")

I'm tidak mampu membagi nilai-nilai dari string ini:

"Makanan 1 | 3 | Suasana 3 | Nilai untuk uang 1 "

Berikut ini's saya saat ini code:

String rat_values = "Food 1 | Service 3 | Atmosphere 3 | Value for money 1 ";
String[] value_split = rat_values.split("|");

Output

[, F, o, o, d, , 1, , |, , S, e, r, v, i, c, e, , 3, , |, , A, t, m, o, s, p, h, e, r, e, , 3, , |, , V, a, l, u, e, f, o, r, m, o, n, e, y, , 1, ]

Output yang diharapkan

Makanan 1 Layanan 3 Suasana 3 Nilai uang 1

Mengomentari pertanyaan (1)
Larutan

| merupakan metakarakter dalam regex. Anda'a perlu untuk melarikan diri itu:

String[] value_split = rat_values.split("\\|");
Komentar (1)

Dengan Menggunakan Pola.quote()

String[] value_split = rat_values.split(Pattern.quote("|"));

//System.out.println(Arrays.toString(rat_values.split(Pattern.quote("|")))); //(FOR GETTING OUTPUT)

Menggunakan karakter Escape(untuk metakarakter)

String[] value_split = rat_values.split("\\|");
//System.out.println(Arrays.toString(rat_values.split("\\|"))); //(FOR GETTING OUTPUT)

Menggunakan StringTokenizer(Untuk menghindari ekspresi regular masalah)

public static String[] splitUsingTokenizer(String Subject, String Delimiters) 
{
     StringTokenizer StrTkn = new StringTokenizer(Subject, Delimiters);
     ArrayList ArrLis = new ArrayList(Subject.length());
     while(StrTkn.hasMoreTokens())
     {
       ArrLis.add(StrTkn.nextToken());
     }
     return ArrLis.toArray(new String[0]);
}

Menggunakan Pola kelas(jawa.util.regex.Pola)

Arrays.asList(Pattern.compile("\\|").split(rat_values))
//System.out.println(Arrays.asList(Pattern.compile("\\|").split(rat_values))); //(FOR GETTING OUTPUT)

Output

[Food 1 ,  Service 3 ,  Atmosphere 3 ,  Value for money 1 ]
Komentar (1)

Atau.. Pola#quote:

String[] value_split = rat_values.split(Pattern.quote("|"));

Hal ini terjadi karena String#split menerima regex:

| memiliki arti khusus dalam regex.

quote akan kembali representasi String untuk regex.

Komentar (1)

split mengambil regex sebagai parameter.| memiliki makna khusus dalam regex.. menggunakan \\| bukan | untuk melarikan diri itu.

Komentar (0)
String rat_values = "Food 1 | Service 3 | Atmosphere 3 | Value for money 1 ";
    String[] value_split = rat_values.split("\\|");
    for (String string : value_split) {

        System.out.println(string);

    }
Komentar (0)