Távolítsa el vagy cserélje le a karakterlánc egy részét a Java-ban

1. Áttekintés

Ebben az oktatóanyagban különféle eszközöket fogunk megvizsgálni, amelyekkel eltávolíthatjuk vagy kicserélhetjük az a részét Húr Java-ban.

Megvizsgáljuk az alrész eltávolítását és / vagy cseréjét az a használatával Húr API, majd a StringBuilder API és végül a StringUtils osztályú Apache Commons könyvtár.

Bónuszként megvizsgáljuk egy pontos szó a String API és az Apache Commons használatával RegExUtils osztály.

2. Húr API

Az egyik legegyszerűbb és legegyszerűbb módszer az alszöveg cseréjére a csere, csereMinden vagy firstFirst a Vonós osztály.

A cserélje () A metódus két argumentumot vesz igénybe - cél és helyettesítő szöveg:

Húrmester = "Hello World Baeldung!"; Karakterlánc = "Baeldung"; Karaktersorozat = "Java"; String feldolgozva = master.replace (cél, csere); assertTrue (feldolgozott.tartalmaz (csere)); assertFalse (feldolgozott.tartalmaz (cél));

A fenti részlet ezt a kimenetet adja:

Helló Java Java!

Ha a cél kiválasztásához szabályos kifejezésre van szükség, akkor a csereAll () vagy csereFirst () legyen a választott módszer. Ahogy a nevük is mutatja, csereAll () minden egyező eseményt felvált, míg a ReplaceFirst () helyettesíti az első egyeztetett eseményt:

String master2 = "Üdvözöljük a Baeldungban, Hello World Baeldung"; String regexTarget = "(Baeldung) $"; Karakterlánc feldolgozott2 = master2.replaceAll (regexTarget, csere); assertTrue (feldolgozott2.endsWith ("Java"));

Az értéke feldolgozott2 lesz:

Üdvözöljük a Baeldungban, a Hello World Java

Ez azért van, mert a regex szállított regexTarget csak az utolsó előfordulásának felel meg Baeldung. Az összes fenti példában használhatunk egy üres helyettesítőt, és ez hatékonyan eltávolítja a cél a-tól fő-.

3. StringBuilder API

A Java-ban is kezelhetjük a szöveget a StringBuilder osztály. A két módszer itt van töröl() és cserélje ().

Felépíthetjük a StringBuilder egy létezőtől Húr majd használja az említett módszereket a Húr kívánt manipuláció:

Húrmester = "Hello World Baeldung!"; Karakterlánc = "Baeldung"; Karaktersorozat = "Java"; int startIndex = master.indexOf (cél); int stopIndex = startIndex + target.length (); StringBuilder builder = új StringBuilder (master);

Most eltávolíthatjuk a cél a ... val töröl():

builder.delete (startIndex, stopIndex); assertFalse (builder.toString (). tartalmazza (cél));

Használhatjuk a cserélje () a master frissítéséhez:

builder.replace (startIndex, stopIndex, csere); assertTrue (builder.toString (). tartalmazza (csere));

Egy nyilvánvaló különbség a StringBuilder és a Húr Az API az, hogy meg kell szereznünk a kezdet és a leállítás indexét célHúr minket.

4. StringUtils Osztály

Egy másik módszer, amelyet figyelembe veszünk, az Apache Commons könyvtár.

Először adjuk hozzá a projektünkhöz a szükséges függőséget:

 org.apache.commons commons-lang3 3.8.1 

A könyvtár legújabb verziója itt található.

A StringUtils osztály rendelkezik módszerekkel az a részstruktúrájának helyettesítésére Húr:

Húrmester = "Hello World Baeldung!"; Karakterlánc = "Baeldung"; Karaktersorozat = "Java"; String feldolgozva = StringUtils.replace (master, target, helyettesítés); assertTrue (feldolgozott.tartalmaz (csere));

Van egy túlterhelt változata a cserélje () hogy egész számot vesz fel max paraméter, amely meghatározza a cserélendő események számát. Használhatjuk a csereIgnoreCase () ha az esetérzékenység nem okoz gondot:

String master2 = "Helló világ Baeldung!"; Karakterlánc2 = "baeldung"; String feldolgozott2 = StringUtils.replaceIgnoreCase (master2, target2, helyettesítés); assertFalse (feldolgozott2.tartalmaz (cél));

5. Pontos szavak cseréje

Ebben az utolsó példában megtanuljuk, hogyan cseréljünk le egy pontos szót a-ban Húr.

A helyettesítés egyszerű módja a szabályos kifejezés használata, szóhatárokkal.

A szóhatár reguláris kifejezés az \ b. A kívánt szó beillesztése ebbe a reguláris kifejezésbe csak a pontos előfordulásoknak felel meg.

Először nézzük meg, hogyan kell használni ezt a reguláris kifejezést a String API-val:

Karaktersorozat = "Az autó nem azonos a kocsival, és egyes repülőgépek képesek bennük autókat szállítani!"; String regexTarget = "\ bcar \ b"; String tarkkaWordReplaced = mondat.replaceAll (regexTarget, "kamion");

A pontosWordReplaced karakterlánc tartalmazza:

"A teherautó nem azonos a kocsival, és néhány gép képes autókat szállítani bennük!"

Csak a pontos szó kerül kicserélésre. Figyelje meg, hogy a visszafelé mutató perjel mindig elkerülendő, ha a reguláris kifejezésekkel dolgozik a Java-ban.

A pótlás alternatív módja a RegExUtils osztály az Apache Commons könyvtárból, amely hozzáadható függőségként, amint azt az előző szakaszban láttuk:

String regexTarget = "\ bcar \ b"; String tarkkaWordReplaced = RegExUtils.replaceAll (mondat, regexTarget, "kamion"); 

Bár mindkét módszer ugyanazt az eredményt hozza, a konkrét forgatókönyvünkön múlik, hogy melyiket kell használni.

6. Következtetés

Összegzésként elmondhatjuk, hogy a Java-ban egy alstring eltávolításának és cseréjének több módját is feltártuk. A legjobb alkalmazási módszer továbbra is nagyban függ az aktuális helyzettől és a kontextustól.

Szokás szerint a teljes forráskód elérhető a Githubon.