Saya percaya bahwa semua orang sering menggunakan metode split string, tetapi apakah Anda pernah menemukan situasi berikut:
Semua orang berpikir tentang apa hasil eksekusi kode berikut
Public static void main (string [] args) {// TODO AUTO-GENERATD Metode Stub string str1 = "a, b, c, a"; , B, C ,,, ""; "" "", "); Panjang str3: "+"+ s3.length);}
Hasil Eksekusi:
Mengapa hasil ini muncul?
Larutan:
Dengan melihat API, kami menemukan bahwa metode split yang kami gunakan ditransmisikan oleh 0 secara default.
Public static void main (string [] args) {// TODO AUTO-GENERATD Metode Stub string str1 = "a, b, c, a"; , B, C ,,, ""; split (",", -1); "Panjang str3:"+s3.length);}
Setelah menemukan API, saya menemukan bahwa di kelas string, ada dua metode beban berat split
1. String publik [] split (string regex)
String ini terpecah sesuai dengan ekspresi reguler yang diberikan.
Peran metode ini seperti menggunakan ekspresi yang diberikan dan membatasi parameter 0 untuk memanggil dua metode split parameter. Oleh karena itu, array tidak termasuk string akhir.
Misalnya, string "boo: dan: foo" dapat menghasilkan hasil berikut:
Hasil Regex
: {"Boo", "dan", "foo"} o {"b", "", ": dan: f"}
parameter:
REGEX -Fixed Law Reguler Expression Returns:
Array string, yang dibuang sesuai dengan pencocokan ekspresi ekspresi reguler untuk membagi string ini:
PatternsyntaxException -Jika tata bahasa dalam ekspresi reguler tidak valid
2. String publik [] split (string regex, batas int)
String ini dibagi menurut ekspresi reguler yang diberikan oleh pencocokan.
Array yang dikembalikan dengan metode ini berisi sub -string dari string ini. Sub -string dalam array diatur dalam urutan yang mereka muncul di string ini. Jika ekspresi tidak cocok dengan bagian input apa pun, array pendapatan hanya memiliki satu elemen, yaitu, string ini.
Limit aplikasi mode kontrol parameter, sehingga mempengaruhi panjang array. Jika batas n ini lebih besar dari 0, mode akan digunakan sebagian besar n -onc, dan panjang array tidak akan lebih besar dari n, dan item terakhir dari array akan berisi semua input di luar batas pencocokan akhir. Jika n tidak positif, mode akan digunakan sebanyak mungkin, dan array mungkin panjangnya. Jika n adalah 0, maka mode akan digunakan sebanyak mungkin, array dapat panjang, dan string akhir -kosong akan dibuang.
Misalnya, string "boo: dan: foo" dapat menghasilkan hasil berikut dengan parameter ini:
Hasil RegexLimit
: 2 {"boo", "dan: foo"}: 5 {"boo", "dan", "foo"}: -2 {"boo", "dan", "foo"} o 5 {"b" "", ": dan: f", "", "} o -2 {" b "," ",": dan: f "," ","} o 0 {"b", "": dan: F"}
Bentuk str.split (regex, n) yang menyebut metode ini persis sama dengan hasil yang dihasilkan oleh ekspresi berikut:
Pola.compile (regex) .split (str, n)
parameter:
Regex -Definition Expression Reguler
Batas -ambang batas, seperti dijelaskan di atas
kembali:
Array string, ditentukan sesuai dengan pencocokan ekspresi ekspresi reguler.
Membuang:
PatternsyntaxException -Jika tata bahasa dalam ekspresi reguler tidak valid