Uklonite ili zamijenite dio niza u Javi

1. Pregled

U ovom uputstvu tražit ćemo razna sredstva kako možemo ukloniti ili zamijeniti dio a Niz na Javi.

Istražit ćemo uklanjanje i / ili zamjenu podniza pomoću a Niz API, a zatim pomoću a StringBuilder API i konačno korištenje StringUtils razred biblioteke Apache Commons.

Kao bonus, također ćemo razmotriti zamjenu točno riječ koristeći String API i Apache Commons RegExUtils razred.

2. Niz API

Jedna od najjednostavnijih i najjednostavnijih metoda zamjene podniza je upotreba zamijeniti, zamijenitiSve ili replaceFirst od a Žičani razred.

The zamijeniti() metoda uzima dva argumenta - ciljni i zamjenski tekst:

String master = "Hello World Baeldung!"; Niz cilja = "Baeldung"; Zamjena niza = "Java"; Niz obrađen = master.replace (cilj, zamjena); assertTrue (obrađeno.sadrži (zamjena)); assertFalse (obradeno.sadrži (cilj));

Gornji isječak dobit će ovaj rezultat:

Pozdrav svijete Java!

Ako je pri odabiru cilja potreban regularni izraz, tada se zamjeni sve() ili replaceFirst () trebala biti metoda izbora. Kao što im i ime govori, zamjeni sve() će zamijeniti svaku podudarnu pojavu, dok će replaceFirst () zamijenit će prvu podudarnu pojavu:

String master2 = "Dobro došli u Baeldung, Hello World Baeldung"; Niz regexTarget = "(Baeldung) $"; Niz obrađen2 = master2.replaceAll (regexTarget, zamjena); assertTrue (processing2.endsWith ("Java"));

Vrijednost obrađena2 bit će:

Dobrodošli u Baeldung, Hello World Java

To je zato što je regularni izraz isporučen kao regexTarget podudarat će se samo s posljednjom pojavom Baeldung. U svim gore navedenim primjerima možemo koristiti praznu zamjenu i ona će učinkovito ukloniti a cilj od ovladati; majstorski.

3. StringBuilder API

Također možemo manipulirati tekstom na Javi koristeći StringBuilder razred. Dvije su metode ovdje izbrisati() i zamijeniti().

Možemo konstruirati primjerak a StringBuilder od postojećeg Niz a zatim upotrijebite spomenute metode za izvođenje Niz manipulacija po želji:

String master = "Hello World Baeldung!"; Niz cilja = "Baeldung"; Zamjena niza = "Java"; int startIndex = master.indexOf (target); int stopIndex = startIndex + target.length (); StringBuilder builder = novi StringBuilder (master);

Sada možemo ukloniti cilj s izbrisati():

builder.delete (startIndex, stopIndex); assertFalse (builder.toString (). sadrži (cilj));

Možemo i koristiti zamijeniti() da biste ažurirali master:

builder.replace (startIndex, stopIndex, zamjena); assertTrue (builder.toString (). sadrži (zamjena));

Jedna prividna razlika između StringBuilder i Niz API je da moramo dobiti indeks početka i zaustavljanja indeksa ciljNiz sebe.

4. StringUtils Razred

Sljedeća metoda koju ćemo razmotriti je biblioteka Apache Commons.

Prvo, dodajmo potrebnu ovisnost našem projektu:

 org.apache.commons commons-lang3 3.8.1 

Najnoviju verziju knjižnice možete pronaći ovdje.

The StringUtils klasa ima metode za zamjenu podniza a Niz:

String master = "Hello World Baeldung!"; Niz cilja = "Baeldung"; Zamjena niza = "Java"; Niz obrađen = StringUtils.replace (master, target, replacement); assertTrue (obrađeno.sadrži (zamjena));

Postoji preopterećena varijanta zamijeniti() koji uzima cijeli broj maks parametar, koji određuje broj pojava koje treba zamijeniti. Također možemo koristiti replaceIgnoreCase () ako osjetljivost na velika i mala slova ne zabrinjava:

String master2 = "Pozdrav svjetski baeldung!"; Niz cilja2 = "baeldung"; Niz obrađen2 = StringUtils.replaceIgnoreCase (master2, target2, replacement); assertFalse (obradjeno2.sadrži (cilj));

5. Zamjena točnih riječi

U ovom posljednjem primjeru, naučit ćemo kako zamijeniti točnu riječ unutar Niz.

Izravni način izvođenja ove zamjene je upotreba regularnog izraza s granicama riječi.

Regularni izraz riječi granica je \ b. Zatvaranje željene riječi unutar ovog regularnog izraza podudarat će se samo s točnim pojavama.

Prvo, pogledajmo kako koristiti ovaj regularni izraz sa String API-jem:

Niz rečenice = "Automobil nije isto što i kočija, a neki zrakoplovi mogu u sebi nositi automobile!"; Niz regexTarget = "\ bcar \ b"; Niz točanWordReplaced = rečenica.replaceAll (regexTarget, "kamion");

The absoluteWordReplaced niz sadrži:

"Kamion nije isto što i kočija, a neki zrakoplovi mogu u sebi nositi automobile!"

Zamijenit će se samo točna riječ. Primijetite da se pri radu s regularnim izrazima u Javi uvijek treba izbjeći kosu crtu.

Alternativni način za ovu zamjenu je upotreba datoteke RegExUtils klase iz biblioteke Apache Commons, koja se može dodati kao ovisnost kao što smo vidjeli u prethodnom odjeljku:

Niz regexTarget = "\ bcar \ b"; String absoluteWordReplaced = RegExUtils.replaceAll (rečenica, regexTarget, "kamion"); 

Iako će obje metode dati isti rezultat, odluka o tome koja će se koristiti ovisit će o našem specifičnom scenariju.

6. Zaključak

Zaključno, istražili smo više načina uklanjanja i zamjene podniza u Javi. Najbolja metoda za primjenu još uvijek uvelike ovisi o trenutnoj situaciji i kontekstu.

Kao i obično, cjeloviti izvorni kod dostupan je na Githubu.