Ayo ngobrol babagan metode pamisah String : apa sing ditindakake lan kenapa dibutuhake. Iku gampang kanggo guess sing dibagi senar, nanging carane iku bisa ing laku? Ayo dadi njupuk dipikir nyedhaki carane cara bisa lan ngrembug sawetara rincian non-jelas, lan ing wektu sing padha mangerteni carane akeh cara pamisah ana bener ing kelas String . Ayo budal!
Gatekna prabédan antarane rong larik pungkasan ing tabel ing ndhuwur. Ing baris penultimate, delimiter minangka koma, supaya baris dipérang dadi sawetara tembung duwe spasi anjog. Ing baris pungkasan, kita nggunakake koma lan karakter spasi minangka delimiter. Mulane, larik sing diasilake ora ngemot garis kanthi spasi utama. Iki mung rincian cilik sing nuduhake sepira pentinge kanthi ati-ati milih pemisah sing bener.
Definition lan teken kanggo Jawa String.split
Cara pamisah ing Jawa pamisah string menyang substrings nggunakake delimiter sing ditemtokake nggunakake expression biasa. Ayo menehi tandha cara lan miwiti nyilem:String[] split(String regex)
Ana rong perkara sing jelas saka tandha tangan:
- Cara ngasilake array saka strings.
- Cara kasebut njupuk string regex minangka parameter.
- Cara ngasilake array saka strings.
Dhéfinisi kasebut ngemot tembung-tembung ing ngisor iki: " Cara pamisah ing Jawa pamisah string menyang substrings." Substrings iki diklumpukake kanthi cara dadi array lan makili nilai bali.
- Cara kasebut njupuk string regex minangka parameter.
Maneh, elinga definisi: "memisah senar menyang substrings nggunakake delimiter sing ditemtokake nggunakake ekspresi biasa." Parameter regex sing ditampa yaiku pola ekspresi reguler sing ditrapake ing string sumber lan cocog karo karakter delimiter (utawa kombinasi karakter) ing string sumber.
Split ing laku
Saiki ayo pindhah menyang bisnis. Ayo mbayangno yen kita duwe senar karo tembung. Contone, kaya iki:
Aku tresna marang Jawa
We kudu break string menyang tembung. Kita weruh yen ing baris iki tembung-tembung kasebut dipisahake saka siji liyane kanthi spasi. Spasi minangka calon sing cocog kanggo peran pemisah ing kasus iki. Iki minangka kode kanggo ngrampungake masalah iki:
public class Main {
public static void main(String[] args) {
String str = "I love Java";
String[] words = str.split(" ");
for (String word : words) {
System.out.println(word);
}
}
}
Output saka metode utama bakal dadi baris ing ngisor iki:
Aku tresna marang Jawa
Ayo goleki sawetara conto liyane babagan cara cara pamisah :
baris | pembatas | Hasil saka metode |
"Aku tresna Jawa" | "" (karakter spasi) | { "Aku" , "tresna" , "Jawa" } |
"192.168.0.1:8080" | ":" | { "192.168.0.1" , "8080" } |
"Abang, orange, kuning" | "," | { "Abang" , "oranye" , "kuning" } |
"Abang, orange, kuning" | "," | { "Abang" , "oranye" , "kuning" } |
Pembatas utama
Ana siji nuansa sing luwih penting. Yen string sumber diwiwiti kanthi delimiter, unsur pisanan saka array sing diasilake bakal dadi string kosong. Ing conto, bakal katon kaya iki: Sumber string: "Aku tresna Jawa" Delimiter: " " Asil array: { "" , "Aku" , "tresna" , "Jawa" } Nanging yen string sumber rampung karo delimiter lan ora diwiwiti, asil bakal beda: Sumber string: "Aku tresna Jawa" Separator: " " Asil array: { "Aku" , "tresna" , "Jawa" } Ayo katon ing kode ing variasi saka cara pamisah kanthi karakter pemisah ing pungkasan lan/utawa wiwitan senar sumber:public class Main {
public static void main(String[] args) {
print("I love Java".split(" "));
print(" I love Java".split(" "));
print("I love Java ".split(" "));
print(" I love Java ".split(" "));
}
static void print(String[] arr) {
System.out.println(Arrays.toString(arr));
}
}
Output saka metode utama bakal kaya iki:
[Aku, tresna, Jawa] [, aku, tresna, Jawa] [Aku, tresna, Jawa] [, aku, tresna, Jawa]
Elinga maneh yen karakter pisanan ing string sumber minangka karakter delimiter, array sing diasilake bakal duwe string kosong minangka unsur pisanan.
Wong sing overloaded
Kelas String duwe metode pamisah liyane kanthi teken iki:String[] split(String regex, int limit)
Cara iki nduweni parameter watesan tambahan : nemtokake jumlah kaping pola regex bakal diterapake ing string sumber. Ing ngisor iki panjelasan:
watesan> 0
watesan -1 kaping ditrapake . Ing kasus iki, dawa array ora ngluwihi nilai watesan . Unsur pungkasan array bakal dadi bagean saka senar sawise delimiter pungkasan sing ditemokake. Tuladha:public class Main {
public static void main(String[] args) {
print("I love Java".split(" ", 1));
print("I love Java".split(" ", 2));
/*
Output:
[I love Java]
[I, love Java]
*/
}
static void print(String[] arr) {
System.out.println(Arrays.toString(arr));
}
}
watesan <0
Pola telusuran pembatas diterapake ing senar kaping pirang-pirang. Dawane array sing diasilake bisa wae. Tuladha:public class Main {
public static void main(String[] args) {
// Notice the space at the end of the line
print("I love Java ".split(" ", -1));
print("I love Java ".split(" ", -2));
print("I love Java ".split(" ", -12));
/*
Output:
[I, love, Java, ]
[I, love, Java, ]
[I, love, Java, ]
Note that the last element of the array is
an empty string, resulting from the space
at the end of the original string.
*/
}
static void print(String[] arr) {
System.out.println(Arrays.toString(arr));
}
}
watesan 0
Minangka watesan < 0, pola delimiter ditrapake kanggo senar kaping pirang-pirang. Array sing diasilake bisa wae dawa. Yen unsur pungkasan padha karo senar kosong, bakal dibuwang ing larik pungkasan. Tuladha:public class Main {
public static void main(String[] args) {
// Notice the space at the end of the line
print("I love Java ".split(" ", 0));
print("I love Java ".split(" ", 0));
print("I love Java ".split(" ", 0));
/*
Output:
[I, love, Java]
[I, love, Java]
[I, love, Java]
Note the absence of empty strings at the end of the arrays
*/
}
static void print(String[] arr) {
System.out.println(Arrays.toString(arr));
}
}
Yen kita ndeleng implementasine metode pamisah kanthi siji argumentasi, kita bakal weruh yen metode iki nyebutake sedulur sing kakehan karo argumen kapindho nol:
public String[] split(String regex) {
return split(regex, 0);
}
Macem-macem conto
Ing praktik kerja, kadhangkala kedadeyan yen kita duwe garis sing disusun miturut aturan tartamtu. Baris iki bisa "teka" menyang program kita saka ngendi wae:- saka layanan pihak katelu;
- saka panjalukan menyang server kita;
- saka file konfigurasi;
- lsp.
user_id|user_login|user_email
Contone, ayo njupuk nilai tartamtu:
135|bender|bender@gmail.com
Lan saiki programmer ngadhepi tugas: nulis cara sing ngirim email menyang pangguna. Ing pembuangan ana informasi babagan pangguna, direkam ing format ndhuwur. Ya, subtask sing bakal terus dianalisis yaiku ngisolasi alamat email saka informasi umum babagan pangguna. Iki minangka salah sawijining conto ing ngendi cara pamisah bisa migunani. Sawise kabeh, yen kita ndeleng cithakan, kita ngerti yen kanggo ngekstrak alamat email pangguna saka kabeh informasi, kita mung kudu misahake baris nggunakake metode pamisah . Banjur alamat email bakal ana ing unsur pungkasan saka array sing diasilake. Ayo menehi conto cara kasebut, sing njupuk senar sing ngemot informasi babagan pangguna lan ngasilake email pangguna. Kanggo nyederhanakake, ayo nganggep manawa string iki mesthi cocog karo format sing dibutuhake:
public class Main {
public static void main(String[] args) {
String userInfo = "135|bender|bender@gmail.com";
System.out.println(getUserEmail(userInfo));
// Output: bender@gmail.com
}
static String getUserEmail(String userInfo) {
String[] data = userInfo.split("\\|");
return data[2]; // or data[data.length - 1]
}
}
Wigati pemisah: "\\|" . Wiwit ing ekspresi reguler "|" - iki minangka karakter khusus sing logika tartamtu diikat; supaya bisa digunakake minangka biasa (sing pengin ditemokake ing senar sumber), kita kudu uwal saka karakter iki nggunakake rong garis miring. Ayo goleki conto liyane. Ayo kita duwe informasi babagan pesenan, sing ditulis ing format iki:
item_nomer_1, item_name_1, item_rega_1; item_nomer_2, item_name_2, item_rega_2;...; item_nomer_n, item_name_n, item_price_n
Utawa ayo njupuk nilai tartamtu:
1, timun, 20,05; 2, tomat, 123,45; 3, hares, 0,50
Kita ngadhepi tugas ngitung total biaya pesenan. Ing kene kita kudu nggunakake cara pamisah kaping pirang-pirang. Langkah pisanan yaiku pamisah string liwat simbol ";" dadi bagean komponen. Banjur ing saben bagean kasebut kita bakal duwe informasi babagan produk individu, sing bisa diproses ing mangsa ngarep. Banjur, ing saben produk, kita bakal misahake informasi kasebut kanthi nggunakake simbol "," lan njupuk saka array sing diasilake unsur kanthi indeks tartamtu (sing regane disimpen), ngowahi dadi bentuk numerik lan ngumpulake biaya pungkasan. saka pesenan. Ayo nulis metode sing bakal ngetung kabeh iki:
public class Main {
public static void main(String[] args) {
String orderInfo = "1, cucumbers, 20.05; 2, tomatoes, 123.45; 3, hares, 0.50";
System.out.println(getTotalOrderAmount(orderInfo));
// Output: 144.0
}
static double getTotalOrderAmount(String orderInfo) {
double totalAmount = 0d;
final String[] items = orderInfo.split(";");
for (String item : items) {
final String[] itemInfo = item.split(",");
totalAmount += Double.parseDouble(itemInfo[2]);
}
return totalAmount;
}
}
Coba pikirake dhewe kepiye cara iki. Adhedhasar conto iki, kita bisa ngomong sing cara pamisah digunakake nalika kita duwe sawetara informasi ing wangun senar, saka kang kita kudu extract sawetara informasi luwih spesifik.
Asil
Kita ndeleng metode pamisah kelas String . Sampeyan perlu kanggo pamisah string menyang bagean komponen nggunakake delimiter khusus. Cara ngasilake array saka strings (komponen saka string). Nampa ekspresi reguler sing nemokake karakter delimiter. Kita ndeleng macem-macem subtleties saka metode iki:- karakter delimiter anjog;
- sadulur overloaded karo loro bantahan.
GO TO FULL VERSION