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.