Kako ukloniti posljednji znak niza?

1. Pregled

U ovom kratkom članku provjerit ćemo i razgovarati o različitim tehnikama uklanjanja posljednjeg znaka Niz.

2. Korištenje String.substring ()

Najlakši način je koristiti ugrađeni podniz () metoda od Niz razred.

Da bi se uklonio posljednji znak datosti Niz, moramo koristiti dva parametra: 0 kao početni indeks i indeks pretposljednjeg znaka. To možemo postići pozivom Niz‘S duljina () metoda i oduzimanje 1 iz rezultata.

Međutim, ova metoda nije ništavna a ako koristimo prazan niz, to će uspjeti.

Da bismo prevladali probleme s null i praznim nizovima, metodu možemo umotati u pomoćnu klasu:

javni statički niz removeLastChar (niz) 

Kôd možemo refaktorizirati i koristiti Javu 8:

public static String removeLastCharOptional (String s) {return Optional.ofNullable (s) .filter (str -> str.length ()! = 0) .map (str -> str.substring (0, str.length () - 1 )) .orElse (s); }

3. Korištenje StringUtils.substring ()

Umjesto da ponovno pronađemo kotač, možemo koristiti StringUtils razred iz Apache Commons Lang3 knjižnica koja nudi korisne informacije Niz operacijama. Jedan od njih je ništavno sigurno podniz () metoda, koji obrađuje iznimke.

Uključiti StringUtils moramo ažurirati naš pom.xml datoteka:

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () zahtijeva tri parametra: zadani Niz, indeks prvog znaka (u našem slučaju to će uvijek biti 0) i indeks pretposljednjeg znaka. Opet, možemo jednostavno koristiti duljina () metoda i oduzeti 1:

Niz TEST_STRING = "abcdef"; StringUtils.substring (TEST_STRING, 0, TEST_STRING.length () - 1);

Ipak, ova operacija opet nije ništavna. To će raditi s praznim Žice fino ipak.

4. Korištenje StringUtils.chop ()

StringUtils razred pruža nasjeckati () metoda koja dobro funkcionira sa svim rubnim scenarijima: praznim i null stringovima.

Vrlo je jednostavan za upotrebu i zahtijeva samo jedan parametar: Niz. Njegova je jedina svrha uklanjanje posljednjeg znaka. Ništa više, ni manje:

StringUtils.chop (TEST_STRING);

5. Korištenje redovitog izražavanja

Također možemo ukloniti zadnji znak (ili bilo koji broj znakova) iz a Niz dobrim korištenjem regularnih izraza.

Na primjer, možemo koristiti zamjeni sve() metoda Niz sama klasa - koji uzima dva parametra: regularni izraz i zamjenu Niz:

TEST_STRING.replaceAll (". $", "");

Imajte na umu to, jer pozivamo metodu na Niz - operacija je, naravno, nije nula-sigurno.

Također, zamjeni sve() i izražavanje regularnih izraza može biti složeno na prvi pogled. Ovdje možete pročitati više o regularnom izrazu, no kako bismo logiku učinili malo jednostavnijom za korisnika, možemo je umotati u pomoćnu klasu:

javni statički niz removeLastCharRegex (niz s) {return (s == null)? null: s.replaceAll (". $", ""); }

Imajte na umu da ako a Niz završava novim redom, tada navedena metoda neće uspjeti kao “.” u regularnom izrazu podudara se s bilo kojim znakom, osim s terminatorima linija.

Napokon, prepišimo implementacija s Javom 8:

javni statički niz removeLastCharRegexOptional (String s) {return Optional.ofNullable (s) .map (str -> str.replaceAll (". $", "")) .orElse (s); }

6. Zaključak

U ovom kratkom članku razgovarali smo o različitim načinima uklanjanja samo posljednjeg znaka a Niz - neki priručnik, neki spremni iz kutije.

A ako trebamo veću fleksibilnost i moramo ukloniti više znakova, možemo naprednije rješenje s regularnim izrazima.

Kao i uvijek, kôd korišten u cijelom članku možete pronaći na GitHubu.