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.