Java String split() -metodi esimerkin kanssa

⚡ Älykäs yhteenveto

Jaa merkkijono Java käyttämällä split()-metodia, joka katkaisee tekstin erotinmerkin kohdalla ja palauttaa osat merkkijonotaulukkona. Valinnainen limit-argumentti rajoittaa tuotettujen osien lukumäärää jättäen loput ennalleen.

  • 🧩 Palautustyyppi: split() palauttaa String[]:n, ei koskaan yksittäistä merkkijonoa, joten tulos on sijoitettava taulukkoon.
  • 🔤 Erotinmerkki on regex: Argumentti on säännöllinen lauseke, joten merkit, kuten piste ja pystyviiva, tarvitsevat esca-merkin.ping.
  • 🔢 Raja-arvoargumentti: Jos raja ylitetään kolmeen, tuloksena on kaksi jaettua osaa ja loput tekstistä jäävät viimeiseksi osaksi.
  • ␣ Välilyöntikuvio: Malli \\s vastaa mitä tahansa yksittäistä välilyöntiä, mikä jakaa lauseen sanoihin.
  • 🕳️ Jäljellä olevat tyhjät merkit: Tyhjät loppukentät hylätään, ellei anneta negatiivista rajaa.
  • 🔁 Lukemistulokset: Standardi for silmukka taulukon pituuden yli tulostaa jokaisen osan järjestyksessä.

Java String split() -menetelmä

Mikä on split()-merkkijono Java?

split() menetelmän avulla voit rikkoa jono tietyn perusteella Java merkkijonon erotin. Useimmiten erotin on välilyönti tai pilkku (,), jonka kohdalle haluat katkaista merkkijonon.

split()-funktion syntaksi

public String[] split(String regex)
public String[] split(String regex, int limit)

⚠️ Huomautus palautustyypistä: split() palauttaa String[] ryhmä, ei ainuttakaan StringTuloksen liittäminen tavalliseen String muuttujan kääntäminen epäonnistuu ja siihen liittyy virheilmoitus "incompatible-types", joka on yleisin virhe, jonka aloittelijat tekevät tätä metodia käytettäessä.

Parametri

  • Regex: tekstiin tai merkkijonoon sovellettu säännöllinen lauseke.
  • Raja: tuloksena olevan taulukon arvojen enimmäismäärä. Jos se jätetään pois tai on nolla, palautetaan jokainen säännöllistä lauseketta vastaava alimerkkijono.

Kuinka jakaa merkkijono Java erottimen kanssa

Alla oleva esimerkki näyttää, miten merkkijono jaetaan Java erottimella.

Oletetaan, että meillä on merkkijonomuuttuja nimeltä strMain muodostuu muutamasta sanasta — alfa, beta, gamma, Delta, Sigma — kaikki erotettuna pilkulla (,).

 Jaa merkkijono Java

Tässä, jos haluamme kaikki yksittäiset merkkijonot, paras mahdollinen kaava olisi jakaa ne pilkun perusteella. Joten saamme viisi erillistä merkkijonoa seuraavasti:

  • Alpha
  • beeta
  • Gamma
  • Delta
  • Sigma

Käytä merkkijonoa jakaa menetelmä Java jaettavaa merkkijonoa vasten ja anna erotin argumenttina.

Tässä Java jakaa merkkijonon erottimen kirjainkoolla, erotin on pilkku (,) ja tulos Java pilkulla jaettu merkkijono antaa sinulle taulukon jaon.

class StrSplit{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit = strMain.split(", ");
    for (int i=0; i < arrSplit.length; i++)
    {
      System.out.println(arrSplit[i]);
    }
  }
}

Koodissa oleva silmukka vain tulostaa jokaisen Java jaa merkkijono taulukosta jakofunktion jälkeen Java, kuten alla.

Odotettu tuotos:

Alpha
Beta
Delta
Gamma
Sigma

Esimerkiksi: Java String split() -menetelmä säännöllisellä lausekkeella ja pituudella

Tarkastellaan tilannetta, jossa tarvitset vain ensimmäiset n elementtiä jakofunktion jälkeen Java, mutta haluat merkkijonon pysyvän sellaisenaan. Tuloste on suunnilleen tällainen:

  1. Alpha
  2. beeta
  3. Delta, Gamma, Sigma

Tämä voidaan saavuttaa välittämällä toinen argumentti split()-operaation mukana Java, ja se on tarvittavien merkkijonojen raja.

Tarkastellaan seuraavaa split-metodin koodia kohdassa Java:

class StrSplit2{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit_2 = strMain.split(", ", 3);
    for (int i=0; i < arrSplit_2.length; i++){
      System.out.println(arrSplit_2[i]);
    }
  }
}

Odotettu tuotos:

Alpha
Beta
Delta, Gamma, Sigma

Huomaa, että raja-arvolla 3 saadaan täsmälleen kolme elementtiä: kaksi ensimmäistä erotinmerkkiä otetaan huomioon ja kaikki toisen erottimen jälkeen oleva pidetään yhdessä kolmantena elementtinä.

Kuinka jakaa merkkijono Java avaruuden toimesta

Tarkastellaan tilannetta, jossa haluat jakaa merkkijonon välilyönnillä. Tässä tapauksessa meillä on jaettu merkkijono Java muuttuja nimeltään strMain muutamasta sanasta muodostettu: Tervetuloa Guru99.

public class StrSplit3{
public static void main(String args[]){
String strMain = "Welcome to Guru99";
String[] arrSplit_3 = strMain.split("\\s");
    for (int i=0; i < arrSplit_3.length; i++){
      System.out.println(arrSplit_3[i]);
    }
  }
}

Odotettu tuotos:

Welcome
to
Guru99

Kaava \\s vastaa yhtä välilyöntiä. Käytä \\s+ sen sijaan, kun sanoja voi erottaa useampi kuin yksi välilyönti, muuten jokainen ylimääräinen välilyönti tuottaa tyhjän elementin.

Kuinka pitää tyhjät kielet jaettaessa Java

Yksi käyttäytyminen split() yllättää lähes kaikki ensimmäisellä kerralla kohdatessaan sen: tyhjät kielet heitetään hiljaa pois. "a,b,," pilkulla palautetaan kaksi alkiota, ei neljää, koska oletusarvoinen nolla hylkää kaikki tyhjät kentät taulukon lopussa.

Tällä on merkitystä aina, kun data on paikkasidonnaista – esimerkiksi CSV-rivillä, jonka lopussa puuttuva arvo täyttää edelleen sarakkeen. Näiden tyhjien kohtien menettäminen siirtää jokaista alajuoksun indeksiä.

Hyväksytty a negatiivinen raja pitää heidät:

String row = "Alpha,Beta,,";

// Default: trailing empty fields removed -> length 2
String[] a = row.split(",");
System.out.println(a.length);        // prints 2

// Negative limit: every field preserved -> length 4
String[] b = row.split(",", -1);
System.out.println(b.length);        // prints 4

Kolme sääntöä kattaa jokaisen tapauksen. Raja nolla-, joka on oletusarvo, käyttää kuviota niin monta kertaa kuin mahdollista ja poistaa sitten tyhjät merkkijonot. positiivinen limit soveltaa kuviota enintään raja miinus yksi kertaa, joten viimeinen elementti sisältää koskemattoman jakojäännösosan, täsmälleen kuten aiempi esimerkki, jossa raja oli 3, osoitti. negatiivinen limit soveltaa kuviota niin monta kertaa kuin mahdollista ja pitää kaikki tyhjät kentät, myös viimeiset.

Tyhjien merkkijonojen alku käyttäytyy jälleen eri tavalla: jakaminen ",a,b" tuottaa aina tyhjän ensimmäisen elementin raja-arvosta riippumatta, koska kuvio täsmää nollakohdassa. Suojaudu siltä leikkaamalla syötettä tai suodattamalla tuloksena oleva ryhmä ennen käyttöä.

split() vs. StringTokenizer vs. Pattern.split(): Kumpaa käyttää

Java tarjoaa kolme tapaa jakaa merkkijono osiin. Ne eroavat toisistaan ​​hyväksymänsä erotinmerkin tyypin, palauttamansa arvon ja sen suhteen, käännetäänkö kuvio kerran vai uudelleen joka kutsukerralla, millä on merkitystä, kun jako tapahtuu silmukan sisällä.

Aspect Merkkijono.split() StringTokenizer Kuvio.split()
delimiter Tavallinen ilme Yksittäisten merkkien joukko Tavallinen ilme
Palautukset Jono [] Tunnisteet luettelon kautta Jono []
Kuvio käännetty Joka puhelulla Ei sovellettavissa Kerran, sitten uudelleen
Pitää tyhjät kentät Vain negatiivisella rajalla Ei ikinä Vain negatiivisella rajalla
Tila Suositeltava Vanha, säilytetty yhteensopivuuden vuoksi Suositellaan silmukoissa

Käyttää String.split() tavallisille kertaluonteisille töille, koska se on lyhin kirjoittaa ja lukea selkeästi. Esikäännä Pattern.compile(",").split(text) silmukan sisällä jaettaessa, koska säännöllinen lauseke käännetään tällöin vain kerran eikä jokaisella iteraatiolla. Vältä tätä. StringTokenizer uudessa koodissa; se säilyy vain taaksepäin yhteensopivuuden vuoksi.

Yhteinen Java split()-virheet ja niiden korjaaminen

Lähes kaikki ongelmat split() tracpalautuu jompaankumpaan kahdesta syystä: argumentti on säännöllinen lauseke literaalimerkkijonon sijaan tai yllä kuvatut raja-arvot hylkäävät kenttiä odottamatta. Jokainen alla oleva virhe nimeää oireen ja ratkaisun.

  • Pisteellä jakaminen palauttaa tyhjän taulukon: "1.2.3".split(".") vastaa jokaista merkkiä, koska piste on säännöllisen lausekkeen jokerimerkki. Kosta se seuraavasti: split("\\.").
  • Putken halkaisu käyttäytyy oudosti: Pystyviiva tarkoittaa vuorottelua säännöllisessä lausekkeessa. Käytä sitä koodina split("\\|").
  • Yhteensopimattomien tyyppien virhe: tulos annettiin StringMäärittele muuttuja muodossa String[].
  • Odottamaton tyhjä ensimmäinen elementti: Erotinmerkki näkyy syötteen alussa. Leikkaa merkkijono ensin.
  • Lopussa puuttuvat arvot: Oletusarvoinen raja hylkäsi tyhjät kentät. -1 toisena argumenttina.
  • NullPointerException: split() kutsuttiin null-viittauksella. Tarkista null-arvon olemassaolo ennen jakamista, koska metodi ei pysty käsittelemään sitä.

UKK

Käytä merkkiluokkaa, kuten split("[,;]"), joka katkaisee merkin joko pilkun tai puolipisteen kohdalle. Myös vuorottelu toimii: split(",|;").

Kyllä. Kiedo taulukko sisään Arrays.asList(text.split(",")) kiinteän kokoista näkymää varten tai new ArrayList<>(Arrays.asList(...)) kun listaa pitää muokata jälkikäteen.

Kyllä. AI työkalut tuottavat kuvatusta formaatista toimivan mallin ja selittävät jokaisen tunnuksen. Testaa tulosta reunatapauksia, kuten tyhjiä kenttiä ja lainausmerkeissä olevia arvoja, vastaan ​​ennen kuin luotat siihen.

Tekoälyavustajat tunnistavat, onko syynä käyttämätön metamerkki, hylätty loppukenttä vai alussa oleva erotinmerkki. Nämä ovat kolme mahdollista selitystä odottamattomalle taulukon pituudelle.

Vain yksinkertaiselle datalle. Se ei pysty käsittelemään pilkkuja lainausmerkeissä olevissa kentissä tai upotettuja rivinvaihtoja, joten erillinen CSV-kirjasto on turvallisempi oikeille tiedostoille. Niiden lukeminen rivi riviltä BufferedReader sopii hyvin yhteen tällaisen kirjaston kanssa.

Tiivistä tämä viesti seuraavasti: