Hogyan lehet eltávolítani egy karakterlánc utolsó karakterét?

1. Áttekintés

Ebben a rövid cikkben megvizsgáljuk és megvitatjuk az a. Utolsó karakterének eltávolításának különböző technikáit Húr.

2. Használata String.substring ()

A legegyszerűbb módja a használat a beépített szubsztring () módszer a Húr osztály.

Az adott karakter utolsó karakterének eltávolítása érdekében Húr, két paramétert kell használnunk: 0 kezdő indexként és az utolsó előtti karakter indexeként. Hívással elérhetjük ezt Húr’S hossz() módszer és kivonás 1 az eredménytől.

Azonban, ez a módszer nem semleges és ha üres karakterláncot használunk, ez kudarcot vall.

A null és üres karakterláncokkal kapcsolatos problémák leküzdéséhez a módszert egy segítő osztályba csomagolhatjuk:

public static String removeLastChar (String s) 

Felújíthatjuk a kódot és használhatjuk a Java 8-at:

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

3. Használata StringUtils.substring ()

A kerék újrafeltalálása helyett használhatjuk StringUtils osztály Apache Commons Lang3-tól könyvtár, amely hasznos Húr tevékenységek. Egyikük a semleges szubsztring () módszer, amely a kivételeket kezeli.

Bevenni StringUtils frissítenünk kell pom.xml fájl:

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () három paramétert igényel: egy adott Húr, az első karakter indexe (esetünkben mindig 0 lesz) és az utolsó előtti karakter indexe. Ismét egyszerűen használhatjuk a hossz() módszer és kivonás 1:

Karakterlánc TEST_STRING = "abcdef"; StringUtils.substring (TEST_STRING, 0, TEST_STRING.length () - 1);

Mégis, ez a művelet ismét nem biztonságos. Üresekkel fog működni Húrok rendben mégis.

4. Használata StringUtils.chop ()

StringUtils osztály biztosítja a szelet() metódus, amely jól működik minden éles forgatókönyv esetén: üres és null karakterláncok.

Nagyon könnyen használható és csak egy paramétert igényel: a Húr. Egyetlen célja az utolsó karakter eltávolítása. Se több, se kevesebb:

StringUtils.chop (TEST_STRING);

5. A reguláris kifejezés használata

Az utolsó karaktert (vagy tetszőleges számú karaktert) eltávolíthatjuk az a-ból is Húr a szabályos kifejezések megfelelő felhasználásával.

Például használhatjuk a csereAll () a metódusa Húr osztály maga - amelynek két paramétere van: a reguláris kifejezés és a helyettesítés Húr:

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

Vegye figyelembe, hogy mivel egy metódust hívunk a Húr - a művelet természetesen nem semleges.

Is, csereAll () és a regex kifejezés első látásra összetett lehet. A regexről itt olvashat bővebben, de hogy a logika egy kicsit felhasználóbarátabb legyen, egy segítő osztályba csomagolhatjuk:

public static String removeLastCharRegex (String s) {return (s == null)? null: s.replaceAll (". $", ""); }

Vegye figyelembe, hogy ha a Húr új vonallal végződik, akkor a fenti módszer sikertelen lesz “.” A regex-ben bármely karakter megegyezik a vonalzárók kivételével.

Végül írjuk újra a Java 8-val történő megvalósítás:

public static String removeLastCharRegexOptional (String s) {return Optional.ofNullable (s) .map (str -> str.replaceAll (". $", "")) .orElse (s); }

6. Következtetés

Ebben a rövid cikkben különféle módszereket vitattunk meg, amelyekkel csak az a karakter utolsó karakterét lehet eltávolítani Húr - néhány kézikönyv, néhány készen áll a dobozból.

És ha nagyobb rugalmasságra van szükségünk, és több karaktert kell eltávolítanunk, akkor a fejlettebb megoldást rendszeres kifejezésekkel tudjuk megoldani.

Mint mindig, a cikkben használt kód megtalálható a GitHubon.