Cara membagi String dengan ruang

329

Saya perlu membagi String saya dengan spasi. Untuk ini saya mencoba:

str = "Hello I'm your String";
String[] splited = str.split(" ");

Tapi sepertinya itu tidak berhasil.

safari
sumber
3
Terlihat bagus ... apa saja nilai dalam array 'splited'?
npinti
1
Kode Anda memang berfungsi apa adanya. Lihat kode dijalankan langsung di IdeOne.com .
Basil Bourque
@ BasilBourque - Saya tidak dapat menemukan tombol jalankan di tautan itu
nanosoft
1
@nanosoft Halaman di IdeOne.com berjalan secara otomatis saat memuat. Lihat output di bawah kode, di bagian stdout . Untuk mengubah kode, klik forktautan di dekat sudut kiri atas.
Basil Bourque

Jawaban:

639

Apa yang Anda miliki harus berhasil. Namun, jika ruang yang disediakan adalah default ke ... sesuatu yang lain? Anda dapat menggunakan regex spasi putih:

str = "Hello I'm your String";
String[] splited = str.split("\\s+");

Ini akan menyebabkan sejumlah ruang berurutan untuk membagi string Anda menjadi token.

Sebagai catatan, saya tidak yakin "terpecah" adalah sebuah kata :) Saya percaya keadaan menjadi korban perpecahan juga "terpecah". Itu salah satu dari hal tata bahasa yang rumit :-) Tidak mencoba untuk pilih-pilih, hanya mengira saya akan meneruskannya!

corsiKa
sumber
45
Saya orang Swiss apa yang Anda harapkan, bahasa Inggris saya bukan yang terbaik;
safari
29
:-) Hei itu tidak besar. Saya telah menggunakan beberapa nama variabel konyol (dalam kode saya mungkin seharusnya tidak membiarkannya ditayangkan!) Saya tidak mencoba menjadi nazi tata bahasa atau apa pun, hanya meneruskan sedikit hal-hal sepele, itu saja.
corsiKa
7
@ Safari, Anda baru saja mendapat 2 saran hebat di harga 1. hanya bercanda. Jawaban yang bagus
Nirmal Mangal
8
"Apa yang Anda miliki harus bekerja," Saya mengatakan sesuatu yang serupa cukup sering ketika kode saya rusak.
Griffin
1
Saya merasa berguna karena use case saya adalah untuk memisahkan string dan menghapus beberapa spasi. Satu baris kode tidak baik untuk saya.
Niharika Upadhyay
87

Meskipun jawaban yang diterima baik, perlu diketahui bahwa Anda akan berakhir dengan string kosong terkemuka jika string input Anda mulai dengan spasi putih. Misalnya, dengan:

String str = " Hello I'm your String";
String[] splitStr = str.split("\\s+");

Hasilnya adalah:

splitStr[0] == "";
splitStr[1] == "Hello";
splitStr[2] == "I'm";
splitStr[3] == "Your";
splitStr[4] == "String";

Jadi, Anda mungkin ingin memotong string Anda sebelum membaginya:

String str = " Hello I'm your String";
String[] splitStr = str.trim().split("\\s+");
GaspardP
sumber
29

Saya percaya bahwa menempatkan ekspresi reguler dalam kurung str.split harus menyelesaikan masalah. Metode Java String.split () didasarkan pada ekspresi reguler sehingga yang Anda butuhkan adalah:

str = "Hello I'm your String";
String[] splitStr = str.split("\\s+");
rbrtl
sumber
12

Gunakan Stringutils.split()untuk membagi string dengan langkah putih. Misalnya StringUtils.split("Hello World")mengembalikan "Halo" dan "Dunia";

Untuk menyelesaikan kasus yang disebutkan, kami menggunakan metode split seperti ini

String split[]= StringUtils.split("Hello I'm your String");

ketika kita mencetak array split, hasilnya adalah:

Halo

Aku

anda

Tali

Untuk contoh lengkap, periksa di sini

sandeep vanama
sumber
6

jika entah bagaimana Anda tidak ingin menggunakan metode String split maka Anda dapat menggunakan kelas StringTokenizer di Java sebagai ..

    StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
    String[] splited = new String[tokens.countTokens()];
    int index = 0;
    while(tokens.hasMoreTokens()){
        splited[index] = tokens.nextToken();
        ++index;
    }
Muhammad Suleman
sumber
Ada kemungkinan melempar Pengecualian ArrayIndexOutofBounds.
Ajay Takur
2
Tidak, ini tidak akan membuang "ArrayIndexOutofBounds" karena saya telah menyatakan ukuran array berdasarkan jumlah token yang ditemukan di String. ini akan memastikan bahwa ukuran array tidak akan lebih dari token yang diterima dalam sebuah string.
Muhammad Suleman
6

Coba yang ini

    String str = "This is String";
    String[] splited = str.split("\\s+");

    String split_one=splited[0];
    String split_second=splited[1];
    String split_three=splited[2];

   Log.d("Splited String ", "Splited String" + split_one+split_second+split_three);
sachin pangare
sumber
4

Cara alternatif adalah:

import java.util.regex.Pattern;

...

private static final Pattern SPACE = Pattern.compile(" ");
String[] arr = SPACE.split(str); // str is the string to be split

Lihat di sini

gain
sumber
3

OK, jadi kita harus melakukan pemisahan karena Anda sudah mendapat jawaban saya akan menggeneralisasikannya.

Jika Anda ingin membagi string dengan spasi, pembatas (karakter khusus).

Pertama, hapus ruang utama saat mereka membuat sebagian besar masalah.

str1 = "    Hello I'm your       String    ";
str2 = "    Are you serious about this question_  boy, aren't you?   ";

Pertama-tama hapus ruang utama yang bisa berupa ruang, tab dll

String s = str1.replaceAll("^\\s+","");//starting with whitespace one or more

Sekarang jika Anda ingin membagi berdasarkan ruang atau karakter khusus apa pun.

String[] sa = s.split("[^\\w]+");//split by any non word char

Tetapi karena w berisi [a-zA-Z_0-9], jadi jika Anda ingin membaginya dengan garis bawah (_) juga gunakan

 String[] sa = s.split("[!,? ._'@]+");//for str2 after removing leading space
Anuj Kumar Soni
sumber
Itu replaceAll("^\\s+","")menyelamatkan hari saya. Itu berhasil untuk kasus saya. Terima kasih
Kostas Asargiotakis
2

Contoh Sangat Sederhana di bawah ini:

Semoga ini bisa membantu.

String str = "Hello I'm your String";
String[] splited = str.split(" ");
var splited = str.split(" ");
var splited1=splited[0]; //Hello
var splited2=splited[1]; //I'm
var splited3=splited[2]; //your
var splited4=splited[3]; //String
BaxD
sumber
1

Anda dapat memisahkan string menggunakan kode di bawah ini

   String thisString="Hello world";

   String[] parts = theString.split(" ");

   String first = parts[0];//"hello"

    String second = parts[1];//"World"
Syed Danish Haider
sumber
0

Berikut adalah metode untuk memangkas String yang memiliki "," atau spasi putih

private String shorterName(String s){
        String[] sArr = s.split("\\,|\\s+");
        String output = sArr[0];

        return output;
    }
MrG
sumber
0

Karena sudah lama sejak jawaban ini diposkan, berikut ini cara lain untuk melakukan apa yang diminta:

List<String> output = new ArrayList<>();
try (Scanner sc = new Scanner(inputString)) {
    while (sc.hasNext()) output.add(sc.next());
}

Sekarang Anda memiliki daftar string (yang bisa dibilang lebih baik daripada array); jika Anda memang membutuhkan array, Anda bisa melakukannyaoutput.toArray(new String[0]);

daniu
sumber
0

Tidak hanya ruang putih, tetapi solusi saya juga memecahkan karakter yang tidak terlihat.

str = "Hello I'm your String";
String[] splited = str.split("\p{Z}");
logbasex
sumber
-1

Simple to Spit String by Space

    String CurrentString = "First Second Last";
    String[] separated = CurrentString.split(" ");

    for (int i = 0; i < separated.length; i++) {

         if (i == 0) {
             Log.d("FName ** ", "" + separated[0].trim() + "\n ");
         } else if (i == 1) {
             Log.d("MName ** ", "" + separated[1].trim() + "\n ");
         } else if (i == 2) {
             Log.d("LName ** ", "" + separated[2].trim());
         }
     }
Jaydeep Dobariya
sumber