Android Split string


227

Saya memiliki string yang disebut CurrentStringdan dalam bentuk sesuatu seperti ini "Fruit: they taste good".
Saya ingin membagi CurrentStringmenggunakan :sebagai pembatas.
Dengan demikian kata "Fruit"tersebut akan dipecah menjadi string sendiri dan "they taste good"akan menjadi string lain.
Dan kemudian saya hanya ingin menggunakan SetText()2 yang berbeda TextViewsuntuk menampilkan string itu.

Apa cara terbaik untuk mendekati ini?


Anda mungkin dapat mencoba membaca ekspresi reguler. Mereka juga bekerja dengan baik.
Shouvik

10
@ Falmarri - Setiap pertanyaan unik tentang pemrograman diterima di Stack Overflow.
Pos Tim

Jawaban:


606
String currentString = "Fruit: they taste good";
String[] separated = currentString.split(":");
separated[0]; // this will contain "Fruit"
separated[1]; // this will contain " they taste good"

Anda mungkin ingin menghapus spasi ke String kedua:

separated[1] = separated[1].trim();

Jika Anda ingin membagi string dengan karakter khusus seperti titik (.), Anda harus menggunakan karakter escape \ sebelum titik

Contoh:

String currentString = "Fruit: they taste good.very nice actually";
String[] separated = currentString.split("\\.");
separated[0]; // this will contain "Fruit: they taste good"
separated[1]; // this will contain "very nice actually"

Ada cara lain untuk melakukannya. Misalnya, Anda dapat menggunakan StringTokenizerkelas (dari java.util):

StringTokenizer tokens = new StringTokenizer(currentString, ":");
String first = tokens.nextToken();// this will contain "Fruit"
String second = tokens.nextToken();// this will contain " they taste good"
// in the case above I assumed the string has always that syntax (foo: bar)
// but you may want to check if there are tokens or not using the hasMoreTokens method

Terima kasih untuk ini! Juga berguna untuk memisahkan jam dan menit saat membuat objek Waktu baru.
bekerja

24
Terima kasih! Metode .split () tidak berfungsi sama sekali di Android! StringTokenizer berfungsi dengan baik.
Ayush Pateria

Ya itu ... masalah apa yang Anda miliki?
Cristian

split di android menerima ekspresi reguler alih-alih pembagi string sederhana.
htafoya

1
@HardikParmar menggunakan etPhoneNo.getText().toString().replaceAll("\\D", "");kata yang menggantikan semua yang bukan digit
MilapTank

86

Metode .split akan berfungsi, tetapi menggunakan ekspresi reguler. Dalam contoh ini akan (mencuri dari Cristian):

String[] separated = CurrentString.split("\\:");
separated[0]; // this will contain "Fruit"
separated[1]; // this will contain " they taste good"

Juga, ini berasal dari: Android split tidak berfungsi dengan benar


52

Android membagi string dengan koma

String data = "1,Diego Maradona,Footballer,Argentina";
String[] items = data.split(",");
for (String item : items)
{
    System.out.println("item = " + item);
}

25
     String s = "having Community Portal|Help Desk|Local Embassy|Reference Desk|Site News";
     StringTokenizer st = new StringTokenizer(s, "|");
        String community = st.nextToken();
        String helpDesk = st.nextToken(); 
        String localEmbassy = st.nextToken();
        String referenceDesk = st.nextToken();
        String siteNews = st.nextToken();

22

Anda mungkin juga ingin mempertimbangkan metode TextUtils.split () khusus Android .

Perbedaan antara TextUtils.split () dan String.split () didokumentasikan dengan TextUtils.split ():

String.split () mengembalikan [''] ketika string yang akan dibelah kosong. Ini mengembalikan []. Ini tidak menghapus string kosong dari hasilnya.

Saya menemukan ini perilaku yang lebih alami. Intinya TextUtils.split () hanyalah pembungkus tipis untuk String.split (), yang secara khusus berhubungan dengan case string kosong. Kode untuk metode ini sebenarnya cukup sederhana.


Apa manfaat menggunakan TextUtils.split () daripada hanya memanggil split () langsung pada string?
nibarius

Jawaban yang diedit untuk memperjelas perbedaan antara TextUtils.split () dan String.split ()
gardarh

Terima kasih, saya benar-benar membaca dokumentasi untuk TextUtils.split () tetapi karena beberapa alasan saya melewatkan detail ini. Saya kira saya terlalu lelah untuk memahami apa yang sebenarnya dikatakan.
nibarius

0

String s = "String ="

String [] str = s.split ("="); // sekarang str [0] adalah "halo" dan str [1] adalah "selamat pagi, 2,1"

tambahkan string ini

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.