pisahkan string hanya pada instance pertama - java

145

Saya ingin membagi string dengan charecter '='. Tapi saya ingin membagi pada contoh pertama saja. Bagaimana saya bisa melakukan itu? Berikut adalah contoh JavaScript untuk char '_' tetapi itu tidak berfungsi untuk saya pisahkan string hanya pada instance pertama dari karakter yang ditentukan

Contoh:

apple=fruit table price=5

Ketika saya mencoba String.split ('='); memberikan

[apple],[fruit table price],[5]

Tapi saya butuh

[apple],[fruit table price=5]

Terima kasih

Drakula
sumber
Anda tidak perlu melarikan diri =.
Rohit Jain

Jawaban:

282
string.split("=", 2);

Seperti yang String.split(java.lang.String regex, int limit)dijelaskan:

Array yang dikembalikan oleh metode ini berisi setiap substring dari string ini yang diakhiri oleh substring lain yang cocok dengan ekspresi yang diberikan atau diakhiri pada akhir string. Substring dalam array berada dalam urutan di mana mereka muncul dalam string ini. Jika ekspresi tidak cocok dengan bagian mana pun dari input maka array yang dihasilkan hanya memiliki satu elemen, yaitu string ini.

The limitparameter mengontrol jumlah kali pola yang diterapkan dan karena itu mempengaruhi panjang array yang dihasilkan. Jika batas n lebih besar dari nol maka pola akan diterapkan paling banyak n - 1 kali, panjang array tidak lebih besar dari n , dan entri terakhir array akan berisi semua input di luar pembatas yang cocok terakhir.

String boo:and:foo, misalnya, menghasilkan hasil berikut dengan parameter ini:

Regex Limit    Result
:     2        { "boo", "and:foo" }
:     5        { "boo", "and", "foo" }
:    -2        { "boo", "and", "foo" }
o     5        { "b", "", ":and:f", "", "" }
o    -2        { "b", "", ":and:f", "", "" }
o     0        { "b", "", ":and:f" }
Zaheer Ahmed
sumber
1
Sangat membingungkan untuk dipahami tetapi hanya berhasil! Terima kasih!
Clint Eastwood
4
Beberapa klarifikasi: Batas 2 akan mengembalikan daftar elemen AT PALING 2. Ini dapat mengembalikan daftar 1 elemen jika tidak ada kecocokan dengan ekspresi. Jika ada 2 kecocokan dengan ekspresi, elemen kedua dari array yang dikembalikan tidak akan dipisah.
modle13
11

Ya Anda bisa, cukup berikan param integer ke metode split

String stSplit = "apple=fruit table price=5"

stSplit.split("=", 2);

Berikut ini adalah referensi dokumen java: String # split (java.lang.String, int)

codeMan
sumber
5

Seperti banyak jawaban lain menyarankan pendekatan batas, Ini bisa menjadi cara lain

Anda dapat menggunakan metode indexOf pada String yang akan mengembalikan Occurance pertama dari karakter yang diberikan, Menggunakan indeks itu Anda bisa mendapatkan output yang diinginkan

String target = "apple=fruit table price=5" ;
int x= target.indexOf("=");
System.out.println(target.substring(x+1));
Siva
sumber
2
Ini tidak terpecah tetapi mengekstrak bagian kedua. Mengambil bagian pertama akan membutuhkan satu lagi baris kode ... 4 baris vs. 1 = jempol ke bawah
Clint Eastwood
0

Coba Kode Ini ...

Bekerja.

public class Split
{
    public static void main(String...args)
    {
        String a = "%abcdef&Ghijk%xyz";
        String b[] = a.split("%", 2);

        System.out.println("Value = "+b[1]);
    }
}
Bhola
sumber
0
String string = "This is test string on web";
String splitData[] = string.split("\\s", 2);

Result ::
splitData[0] =>  This
splitData[1] =>  is test string  


String string = "This is test string on web";
String splitData[] = string.split("\\s", 3);

Result ::
splitData[0] =>  This
splitData[1] =>  is
splitData[1] =>  test string on web

Secara default metode split membuat n jumlah array berdasarkan regex yang diberikan. Tetapi jika Anda ingin membatasi jumlah array untuk membuat setelah split daripada melewati argumen kedua sebagai argumen integer.

Kailash Karki
sumber
3
Apa masalahnya? Masukkan lebih banyak detail untuk membuat jawaban Anda jelas!
Paresh Mayani
-2
String[] func(String apple){
String[] tmp = new String[2];
for(int i=0;i<apple.length;i++){
   if(apple.charAt(i)=='='){
      tmp[0]=apple.substring(0,i);
      tmp[1]=apple.substring(i+1,apple.length);
      break;
   }
}
return tmp;
}
//returns string_ARRAY_!

saya suka menulis metode sendiri :)

Martin Košťál
sumber
3
Metode ini tidak terlalu berguna, karena pemisahnya adalah hardcoded. Lebih jauh lagi, implementasi pencarian linear dengan for-loop tidak membawa keuntungan dibandingkan menggunakan String.indexOf untuk menemukan lokasi pemisah pertama. Ketiga, tidak intuitif untuk melihat berapa banyak elemen String yang dikembalikan. Ketika kita berbicara tentang membagi beberapa hal menjadi dua, pertimbangkan untuk menggunakan tipe data Pair <String, String> yang mewakili tepat dua string daripada membuat array.
Wah Wah