CodeGym /Blog Jawa /Acak /Java String.split() metode
John Squirrels
tingkat
San Francisco

Java String.split() metode

Diterbitake ing grup
Ayo dadi pirembagan bab cara Jawa String.split : apa iku lan apa iku perlu. Iku ora hard kanggo guess sing pamisah senar Jawa, nanging carane iki bisa ing laku? Ayo nyilem jero babagan operasi metode kasebut lan ngrembug sawetara rincian sing ora jelas. Ing wektu sing padha, kita bakal sinau carane akeh metode pamisah sing ana ing String . Ayo budal!

Description lan teken kanggo Jawa String.split

Ing Jawa, cara pamisah pamisah string menyang substrings nggunakake delimiter ditetepake 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 nduweni parameter input string sing diarani regex .
Ayo kita nganalisa saben kasebut kanthi kapisah nalika kita ngilangi katrangan ing ndhuwur.
  1. Cara ngasilake array saka strings.

    Pranyatan kasebut ngemot tembung ing ngisor iki: "Ing Jawa, cara pamisah pamisah string dadi substrings." Cara nglumpukake substrings kasebut dadi array sing dadi nilai bali.

  2. Cara kasebut nduweni parameter input string sing diarani regex .

    Maneh, elinga katrangan: "memisah senar menyang substrings nggunakake delimiter sing ditetepake nggunakake ekspresi biasa." Parameter input regex minangka ekspresi reguler sing ditrapake ing senar asli. Nalika karakter utawa kombinasi karakter cocog, padha dianggep minangka delimiter.

Metode String.split () ing Jawa: pamisah string dadi bagean - 1

Pecah Jawa ing laku

Saiki ayo nyedhaki titik kasebut. Coba bayangake kita duwe senar tembung. Contone, kaya iki:
Aku tresna marang Jawa
Kita kudu pamisah string menyang tembung. Kita weruh manawa tembung ing senar iki dipisahake saka siji liyane kanthi spasi. Ing kasus iki, karakter spasi minangka calon sing sampurna kanggo pembatas kita. Kode kanggo ngrampungake tugas kita bakal katon kaya 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 ndeleng sawetara conto liyane babagan cara cara pamisah :
String 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 kapindho nganti pungkasan, koma digunakake minangka pembatas. Akibaté, nalika senar dipérang, sawetara tembung duwe spasi anjog. Ing baris pungkasan, kita nggunakake koma lan spasi minangka pembatas kita. Mulane ora ana substrings kanthi spasi utama ing array sing diasilake. Iki mung rincian subtle sing nduduhake pentinge milih delimiter sing bener.

Pembatas utama

Iki minangka nuansa penting liyane. Yen string asli diwiwiti karo delimiter, unsur pisanan saka array sing diasilake bakal dadi string kosong. Contone, bakal katon kaya iki: String asli: " Aku tresna Jawa" Delimiter: " " Array sing diasilake: { "", "Aku", "tresna", "Jawa" } Nanging yen string asli rampung karo delimiter tinimbang tinimbang diwiwiti karo siji, banjur asil bakal beda: String asli: "Aku tresna Jawa " Delimiter: " " Array sing diasilake: { "Aku", "tresna", "Jawa"

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 metode utama bakal kaya iki:
[Aku, tresna, Jawa] [, aku, tresna, Jawa] [Aku, tresna, Jawa] [, aku, tresna, Jawa]
Maneh nguripake manungsa waé kanggo kasunyatan sing nalika karakter pisanan ing senar asli minangka karakter delimiter, banjur asil sing unsur pisanan ing Uploaded bakal senar kosong.

Sedulur sing overloaded

Kelas String duwe metode pamisah liyane kanthi tandha ing ngisor iki:

String[] split(String regex, int limit)
Cara iki nduweni parameter watesan tambahan : nemtokake kaping pirang-pirang pola regex bakal ditrapake ing senar asli. Deleng panjelasan ing ngisor iki:

watesan> 0

Pola ditrapake watesan -1 kaping. Apa maneh, dawa array bali ora ngluwihi nilai parameter watesan . Unsur pungkasan saka array bakal dadi bagéan saka senar sing ngetutake panggonan pungkasan ing ngendi delimiter 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

Ekspresi reguler delimiter ditrapake kanggo senar kaping pirang-pirang. Array sing diasilake bisa duwe dawa apa wae. Tuladha:

public class Main {
    public static void main(String[] args) {
        // Note the space at the end of the string
        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, ]
        
        Please note that the last element of the array is
        an empty string. This is caused by the whitespace
        at the end of the original string. 
        */
    }

    static void print(String[] arr) {
        System.out.println(Arrays.toString(arr));
    }
}

watesan = 0

Kaya kasus nalika watesan < 0, pola delimiter ditrapake kanggo senar kaping pirang-pirang. Larik pungkasan bisa duwe dawa apa wae. Yen unsur pungkasan strings kosong, lagi dibuwak saka Uploaded final. Tuladha:

public class Main {
    public static void main(String[] args) {
        // Note the space at the end of the string
        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 versi siji-parameter saka metode pamisah , mula kita bisa ndeleng manawa kaya sedulur sing kakehan beban, nanging kanthi argumen kapindho disetel menyang nol:

    public String[] split(String regex) {
        return split(regex, 0);
    }

Macem-macem conto

Ing praktik nyata, kadhangkala ana senar sing digawe miturut aturan tartamtu. Senar kasebut bisa teka ing program kita saka ngendi wae:
  • saka layanan pihak katelu;
  • saka panjalukan sing dikirim menyang server kita;
  • saka file konfigurasi;
  • lan liya-liyane.
Ing kahanan kasebut, programer biasane ngerti "aturan game". Contone, programmer ngerti yen dheweke ngurusi informasi pangguna sing disimpen miturut pola iki:
user_id|user_login|user_email
Ayo njupuk sawetara nilai tartamtu minangka conto:
135|bender|bender@gmail.com
Upamane tugas programer yaiku nulis metode sing ngirim email menyang pangguna. Programmer nduweni akses menyang data pangguna, sing direkam ing format sing diwenehake ing ndhuwur. Subtask sing saiki bakal terus dianalisis yaiku cara ngisolasi alamat email saka data pangguna liyane. Iki minangka salah sawijining conto cara pamisah bisa migunani. Sawise kabeh, yen kita ndeleng cithakan data pangguna, kita ngerti yen ngekstrak alamat email pangguna saka liyane iku gampang kaya nelpon metode pamisah kanggo pamisah string. Banjur alamat email bakal ana ing unsur pungkasan saka array sing diasilake. Iki minangka conto cara sing njupuk senar sing ngemot data pangguna lan ngasilake alamat email pangguna. Kanggo kesederhanaan, ayo ngomong yen string data tansah ing format sing dikarepake:

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]
    }
}
Waca pembatas: "\\|" . Ing ekspresi reguler, "|" minangka karakter khusus kanthi makna khusus, dadi yen kita pengin nggunakake karakter biasa (yaiku apa sing pengin ditemokake ing senar asli), mula kita kudu uwal saka karakter kasebut kanthi rong garis miring. Coba conto liyane. Ayo kita duwe informasi pesenan sing disusun kaya 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 kita bisa nggunakake sawetara nilai tartamtu:
1, timun, 2,39; 2, tomat, 1,89; 3, daging babi, 4,99
Tugas kita yaiku ngitung total biaya pesenan. Ing kene kita kudu ngetrapake metode pamisah kaping pirang-pirang. Langkah pisanan yaiku pamisah string nggunakake ";" minangka pembatas supaya bisa dipecah dadi bagean komponen. Banjur saben substring sing diasilake bakal ngemot informasi babagan produk sing kapisah, sing bisa diproses mengko. Banjur, kanggo saben produk, kita bakal misahake informasi sing cocog nggunakake simbol ",". Kita bakal njupuk unsur karo indeks tartamtu (sing ngendi rega produk disimpen) saka Uploaded string asil, Ngonversi menyang wangun numerik, lan tally munggah biaya total pesenan. Ayo nulis cara sing bakal nindakake kabeh petungan iki:

public class Main {
    public static void main(String[] args) {
        String orderInfo = "1,cucumbers,2.39;2,tomatoes,1.89;3,bacon,4.99";
        System.out.println(getTotalOrderAmount(orderInfo));
        // Output: 9.27
    }

    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;
    }
}
Delengen yen sampeyan bisa ngerti carane cara iki bisa digunakake dhewe. Adhedhasar conto iki, kita bisa ngomong sing cara pamisah digunakake nalika kita duwe sawetara data format minangka senar, lan kita kudu extract informasi tartamtu tartamtu saka iku.

Ringkesan

Kita mriksa cara pamisah kelas String . Iku mung sing perlu nalika sampeyan kudu pamisah senar menyang bagean komponen karo bantuan saka delimiter khusus. Cara kasebut ngasilake array senar (substrings sing kalebu senar asli). Iki nampa ekspresi reguler sing cocog karo karakter delimiter. Kita mriksa macem-macem subtleties saka metode iki:
  • pembatas utama;
  • sadulur overloaded karo loro paramèter.
Kita uga nyoba kanggo model sawetara kahanan urip nyata ngendi kita nggunakake cara pamisah kanggo ngatasi masalah hipotetis, nanging cukup nyata.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION