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.