JavaRush /Blog Jawa /Random-JV /Cara pamisah ing basa Jawa: dibagi string dadi bagean

Cara pamisah ing basa Jawa: dibagi string dadi bagean

Diterbitake ing grup
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!

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:
  1. Cara ngasilake array saka strings.
  2. Cara kasebut njupuk string regex minangka parameter.
Ayo padha ndeleng saben bab kanthi kapisah saka definisi ing ndhuwur.
  1. 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.

  2. 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.

Cara pamisah ing Jawa: dibagi string dadi bagean - 1

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" }
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.

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.
Biasane ing kahanan kaya mengkono programmer ngerti "aturan game". Ayo dadi programmer ngerti yen dheweke duwe informasi babagan pangguna, sing disimpen miturut pola iki:
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.
Kita uga nyoba kanggo simulasi sawetara kahanan "urip nyata" kang digunakake cara pamisah kanggo ngatasi masalah fiktif, nanging cukup nyata.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION