Get Substring from String in Java
1. Áttekintés
Ebben a gyors oktatóanyagban a Java karakterláncok részstringfunkcióira összpontosítunk.
Leginkább a Húr osztály és kevesen az Apache Commons-ból StringUtils osztály.
A következő példák mindegyikében ezt az egyszerű karakterláncot fogjuk használni:
Karakterlánc = "Julia Evans 1984. 09. 25-én született." + "Jelenleg az Egyesült Államokban él (Amerikai Egyesült Államok).";
2. Alapjai szubsztring
Kezdjük itt egy nagyon egyszerű példával - szubsztrátum kibontásával a start indexszel:
assertEquals ("USA (Amerikai Egyesült Államok).", text.substring (67));
Itt jegyezzük meg, hogyan vontuk ki Julia lakóhelye szerinti országot.
Lehetőség van egy végindex megadására is, de anélkül - szubsztring végig fog menni a Húr.
Tegyük meg, és a fenti példában szabaduljunk meg a végén lévő extra ponttól:
assertEquals ("USA (Amerikai Egyesült Államok)", text.substring (67, text.length () - 1));
A fenti példákban a pontos pozíciót használtuk az alszöveg kibontásához.
2.1. Egy rész karakterlánc kezdete egy adott karakternél
Abban az esetben, ha a pozíciót dinamikusan kell kiszámítani egy karakter vagy Húr felhasználhatjuk a indexe módszer:
assertEquals ("Amerikai Egyesült Államok", text.substring (text.indexOf ('(') + 1, text.indexOf (')')));
Hasonló módszer, amely segíthet az alszövegünk megtalálásában lastIndexOf. Használjuk lastIndexOf az „1984” év kitermeléséhez. A szöveg része az utolsó gondolatjel és az első pont között:
assertEquals ("1984", text.substring (text.lastIndexOf ('-') + 1, text.indexOf ('.')));
Mindkét indexe és lastIndexOf felvehet egy karaktert vagy egy Húr paraméterként. Vegyük ki az „USA” szöveget és a zárójelben lévő többi szöveget:
assertEquals ("USA (Amerikai Egyesült Államok)", text.substring (text.indexOf ("USA"), text.indexOf (')') + 1));
3. Használata subSequence
A Húr osztály nyújt egy másik módszert, az úgynevezett subSequence amely hasonlóan működik a szubsztring módszer.
Az egyetlen különbség az, hogy visszaadja a CharSequence a helyett Húr és csak meghatározott kezdési és befejezési index mellett használható:
assertEquals ("USA (Amerikai Egyesült Államok)", text.subSequence (67, text.length () - 1));
4. A reguláris kifejezések használata
A rendszeres kifejezések segítségünkre lesznek ha egy meghatározott mintának megfelelő sztringet kell kinyernünk.
A példában Húr, Julia születési dátuma „éééé-hh-éé”. Ezt a mintát a Java reguláris kifejezés API segítségével illeszthetjük össze.
Először is létre kell hoznunk egy mintát a „nn-éééééé:
Mintaminta = Pattern.compile ("\ d {2} - \ d {2} - \ d {4}";
Ezután alkalmazzuk a mintát, hogy találjunk egyezést a megadott szövegből:
Matcher matcher = minta.matcher (szöveg);
Sikeres meccs után kinyerhetjük az egyeztetést Húr:
if (matcher.find ()) {Assert.assertEquals ("1984-09-25", matcher.group ()); }
A Java rendszeres kifejezésekkel kapcsolatos további részletekért tekintse meg ezt az oktatóanyagot.
5. Használata hasított
Használhatjuk a hasított módszer a Húr osztály, hogy kivonjon egy részstringet. Tegyük fel, hogy ki akarjuk vonni az első mondatot a példából Húr. Ennek használata nagyon egyszerű hasított:
Karakterlánc [] mondatok = text.split ("\.");
Mivel a split módszer elfogad egy regexet, meg kellett menekülnünk a periódus karaktertől. Az eredmény egy 2 mondatból álló tömb.
Használhatjuk az első mondatot (vagy iterálhatjuk a teljes tömböt):
assertEquals ("Julia Evans 1984. 09. 25-én született", mondatok [0]);
Felhívjuk figyelmét, hogy az Apache OpenNLP használatával vannak jobb módszerek a mondatok észlelésére és tokenizálására. Nézze meg ezt az oktatóanyagot, ha többet szeretne megtudni az OpenNLP API-ról.
6. Használata Scanner
Általában használjuk Scanner elemezni a primitív típusokat és Húrok szabályos kifejezések használatával. A Scanner tagolóként bontja a bemenetét egy elválasztó minta segítségével, amely alapértelmezés szerint megfelel a szóköznek.
Megtudhatjuk, hogyan kell ezt használni az első mondat megszerzéséhez a példa szövegéből:
try (Szkenner szkenner = új Szkenner (szöveg)) {szkenner.useDelimiter ("\."); assertEquals ("Julia Evans 1984. szeptember 25-én született", scanner.next ()); }
A fenti példában példát mutattunk Húr mint a szkenner forrása.
Ezután a periódus karaktert határolónak állítjuk be (amit el kell kerülni, különben ebben a kontextusban a speciális reguláris kifejezés karakterként kezeljük).
Végül ebből a körülhatárolt kimenetből állítjuk az első tokent.
Szükség esetén a tokenek teljes gyűjteményén keresztül iterálhatunk az a használatával míg hurok.
while (scanner.hasNext ()) {// tegyen valamit a scanner.next () által visszaküldött tokenekkel
7. Maven-függőségek
Kicsit tovább léphetünk, és használhatunk egy hasznos segédprogramot - a StringUtils osztály - az Apache Commons Lang könyvtár része:
org.apache.commons commons-lang3 3.8
A könyvtár legújabb verzióját itt találja.
8. Használata StringUtils
Az Apache Commons könyvtárak néhány hasznos módszert adnak hozzá az alapvető Java-típusok kezeléséhez. Az Apache Commons Lang számos segítő segédprogramot kínál a java.lang API számára, nevezetesen Húr manipulációs módszerek.
Ebben a példában meglátjuk hogyan lehet kinyerni a kettő közé beágyazott részstruktúrát Húrok:
assertEquals ("Amerikai Egyesült Államok", StringUtils.substringBetween (szöveg, "(", ")"));
Ennek a módszernek van egy egyszerűsített változata arra az esetre, ha az alstring ugyanannak két példánya között beágyazódik Húr:
substringBetween (String str, String tag)
A substringAfter Az ugyanazon osztályból származó metódus az elválasztó első előfordulása után kapja meg az alszöveget.
Az elválasztót nem küldjük vissza:
assertEquals ("USA (Amerikai Egyesült Államok).", StringUtils.substringAfter (szöveg, "lakóhely"));
Hasonlóképpen a substringElőtt A módszer az elválasztó első előfordulása előtt megkapja az alszöveget.
Az elválasztót nem küldjük vissza:
assertEquals ("Julia Evans", StringUtils.substringBefore (szöveg, "született"));
Nézze meg ezt az oktatóanyagot, hogy többet megtudjon Húr feldolgozás az Apache Commons Lang API segítségével.
9. Következtetés
Ebben a gyors cikkben különféle módszereket tudtunk meg az alstringek kibontásáról az Húr Java-ban. Megtekintheti a többi oktatóanyagunkat Húr manipuláció Java-ban.
Mint mindig, a kódrészletek is megtalálhatók a GitHubon.