Cara membagi string dengan karakter spasi apa saja sebagai pembatas


555

Apa pola regex perlu saya untuk lolos ke java.lang.String.split() untuk membagi String menjadi Array substring menggunakan semua karakter spasi ( ' ', '\t','\n' , dll) sebagai pembatas?

Jawaban:


955

Sesuatu di barisan

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

Ini mengelompokkan semua ruang putih sebagai pembatas.

Jadi jika saya memiliki string:

"Hello[space][tab]World"

Ini harus menghasilkan string "Hello"dan "World"dan menghilangkan ruang kosong antara [space]dan[tab] .

Sebagai VonC menunjukkan, backslash harus melarikan diri, karena Java pertama akan mencoba untuk melarikan diri dari string untuk karakter khusus, dan mengirim yang dapat dipecah. Yang Anda inginkan, adalah literal "\s", yang berarti, Anda harus lulus "\\s". Itu bisa sedikit membingungkan.

Ini \\ssetara dengan [ \\t\\n\\x0B\\f\\r].


1
Terima kasih atas pengingat itu. Saya baru saja mengkode dari pinggul :)
Henrik Paul

34
Perhatikan bahwa Anda harus trim()terlebih dahulu: trim().split("\\s++")- jika tidak, mis. Membelah `abc` akan memancarkan dua string kosong terlebih dahulu.
Marcus Junius Brutus

Mengapa Anda menggunakan empat garis miring terbalik pada akhir jawaban Anda? yaitu. "\\\\s"?
Michael Borkowski

"" .trim (). split ("\\ s +") - string kosong memberi Anda panjang 1. "istilah" .trim (). split ("\\ s +") - memberi Anda juga panjang 1 .
PaulSchell

88

Dalam sebagian besar dialek regex ada satu set ringkasan karakter yang nyaman yang dapat Anda gunakan untuk hal semacam ini - ini adalah yang baik untuk diingat:

\w - Cocok dengan karakter kata apa pun.

\W - Cocok dengan karakter non-kata.

\s - Cocok dengan karakter spasi-putih.

\S - Cocok dengan apa pun kecuali karakter spasi putih.

\d - Cocok dengan angka apa pun.

\D - Mencocokkan apa pun kecuali angka.

Pencarian untuk "Regex Cheatsheets" akan memberi Anda banyak ringkasan yang bermanfaat.



Baca kelas Pola JavaDoc
Christophe

64

Agar ini berfungsi dalam Javascript , saya harus melakukan hal berikut:

myString.split(/\s+/g)

15
Ini dalam Javascript. Saya juga tidak memperhatikan :)
miracle2k

14
Ups. Kesalahanku. Mungkin jawaban ini masih akan membantu beberapa orang lain yang menemukan utas ini saat mencari jawaban Javascript. :-)
Mike Manard

Haha saya sedang mencari jawaban untuk JavaScript, secara tidak sengaja menemukan pertanyaan ini dan kemudian memperhatikan jawaban Anda sebelum saya pergi. +1.
Kris

Itu keren! Saya senang mendengar jawaban ini terbukti bermanfaat bagi seseorang, bahkan jika itu menjawab pertanyaan yang salah. :-)
Mike Manard

Ini sangat membantu saya juga, diperlukan untuk membagi server args :)
ProgrammerPlays



10
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

@Stephan saya tidak melihat itu.
Panah


2

Karena ini adalah ekspresi reguler, dan saya berasumsi kamu juga tidak ingin karakter non-alfanumerik seperti koma, titik, dll yang dapat dikelilingi oleh blank (misalnya "satu, dua" harus memberikan [satu] [dua]), harus:

myString.split(/[\s\W]+/)

1

Anda dapat membagi string dengan jeda baris dengan menggunakan pernyataan berikut:

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

Anda dapat membagi string dengan Whitespace dengan menggunakan pernyataan berikut:

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


-1

Pelajari kode ini .. semoga berhasil

    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);

        } 
    }
}

Bisakah Anda merinci jawaban Anda?
Stephan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.