Bagaimana cara split string dengan spasi karakter sebagai pembatas?

Apa pola regex akan membutuhkan saya untuk lulus ke jawa.lang.String.split() metode untuk membagi String menjadi Array substring menggunakan semua karakter spasi putih (' ', '\t', '\n', dll.) sebagai pembatas?

Larutan

Sesuatu di baris

myString.split("\\s+");

Kelompok-kelompok ini semua ruang putih sebagai pembatas.

Jadi jika saya memiliki string:

"Halo[ruang][tab]Dunia"

Ini harus menghasilkan string "Hello" dan "Dunia" dan menghilangkan ruang kosong antara [spasi] dan [tab].

Sebagai VonC mencontohkan, backslash harus melarikan diri, karena Java pertama akan mencoba untuk melarikan diri string untuk karakter khusus, dan mengirim that untuk diurai. Apa yang anda inginkan, harfiah " s", yang berarti, anda harus lulus "\\ \ \ \ s". Itu bisa mendapatkan sedikit membingungkan.

The \\ \ \ \ s setara dengan [ \\t\\n\\x0B\\f\\r]

Komentar (4)

Dalam kebanyakan regex dialek-dialek ada satu set perangkat karakter ringkasan yang dapat anda gunakan untuk hal-hal semacam ini - ini adalah orang-orang yang baik untuk diingat:

\w - Cocok dengan semua karakter kata.

\W - Pertandingan setiap nonword karakter.

s - Pertandingan putih-ruang karakter.

S - Pertandingan apa-apa tapi karakter white-space.

\d - Pertandingan setiap digit.

\D - Pertandingan apa pun kecuali digit.

Pencarian "Regex Cheatsheets" harus membalas anda dengan seluruh banyak dari ringkasan berguna.

Komentar (4)

Untuk mendapatkan ini bekerja Javascript, aku harus melakukan hal berikut:

myString.split(/\s+/g)
Komentar (4)

"\\ \ \ \ s+" harus melakukan trik

Komentar (2)

Anda juga mungkin memiliki UniCode non-breaking space xA0...

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
Komentar (2)
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");
Komentar (3)

Apache Commons Lang memiliki sebuah metode untuk membagi string dengan karakter spasi putih sebagai pembatas:

StringUtils.split("abc def")

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)

Ini mungkin lebih mudah untuk digunakan daripada pola regex.

Komentar (0)

I'm terkejut bahwa tidak ada yang telah disebutkan String.split() tanpa parameter. Isn't bahwa apa yang's dibuat untuk? seperti dalam:

"abc def ghi".split()
Komentar (1)

Karena itu adalah ekspresi reguler, dan saya'm asumsi u juga tidak ingin non-alfanumerik karakter seperti koma, titik, dll yang bisa dikelilingi oleh kekosongan (misalnya "satu , dua," harus memberikan [satu][dua]), harus:

myString.split(/[\s\W]+/)
Komentar (2)
String str = "Hello   World";
String res[] = str.split("\\s+");
Komentar (1)

anda dapat membagi string dengan line break dengan menggunakan pernyataan berikut :

 String textStr[] = yourString.split("\\r?\\n");

anda dapat membagi string dengan Spasi dengan menggunakan pernyataan berikut :

String textStr[] = yourString.split("\\s+");
Komentar (0)

Studi kode ini.. good luck

    import java.util.*;
class Demo{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Input String : ");
        String s1 = input.nextLine();   
        String[] tokens = s1.split("[\\s\\xA0]+");        
        System.out.println(tokens.length);      
        for(String s : tokens){
            System.out.println(s);

        } 
    }
}
Komentar (1)