Rövid útmutató a Java StringTokenizerhez
1. Áttekintés
Ebben a rövid cikkben a Java egyik alapvető osztályát - a StringTokenizer.
2. StringTokenizer
A StringTokenizer osztály segít szétválni Húrok több zsetonba.
StreamTokenizer hasonló funkcionalitást nyújt, de a tokenizálási módszer sokkal egyszerűbb, mint a StreamTokenizer osztály. Módszerei StringTokenizer ne különböztessen meg azonosítókat, számokat és idézett karakterláncokat, és ne ismerje fel és ne hagyja ki a megjegyzéseket.
Az elválasztók (a tokeneket elválasztó karakterek) halmaza megadható vagy a létrehozáskor, vagy jogkivonatonként.
3. A StringTokenizer
A használat legegyszerűbb példája StringTokenizer lesz osztani a Húr meghatározott elválasztók alapján.
Ebben a gyors példában felosztjuk a String argumentumot, és hozzáadjuk a tokeneket egy listához: Figyelje meg, hogyan törjük meg Húr bekerül a tokenek listájába a határoló alapján ”,’. Ezután a hurokban, a tokens.add () módszer; minden tokent hozzáadunk a Tömb lista. Például, ha a felhasználó aÜdvözöljük a baeldung.com oldalon", Ennek a metódusnak vissza kell adnia egy listát, amely háromszavas töredéket tartalmaz"Üdvözöljük“, “nak nek”És„baeldung.com“. Mivel StringTokenizer megvalósítja Felsorolás felületen, J-vel használhatjukava’S Gyűjtemények felület. Ha a korábbi példát vesszük figyelembe, akkor a zsetonokkal ugyanazt a készletet lehívhatjuk Collections.list () módszer és Folyam API: Itt haladunk el a StringTokenizer magát mint paramétert a Collections.list () módszer. Megjegyzendő itt, hogy mivel a Felsorolás egy Tárgy type, be kell írnunk a tokenteket ide Húr típus (vagyis a megvalósítástól függ; ha használjuk Lista nak,-nek Egész / úszó akkor be kell írnunk Egész / úszó). StringTokenizer két túlterhelt kivitelezővel érkezik az alapértelmezett kivitelező mellett: StringTokenizer (String str) és StringTokenizer (String str, String delim, logikai returnDelims): StringTokenizer (String str, String delim, logikai returnDelims) vesz egy extrát logikai bemenet. Ha a logikai érték az igaz, azután StringTokenizer magát a határolót tokennek tekinti, és hozzáadja a belső tokenekhez. StringTokenizer (String str) az előző példa parancsikonja; belsőleg meghívja a másik konstruktort kemény kódolású elválasztóval ”\ T \ n \ r \ f” és a logikai érték as hamis. StringTokenizer szintén túlterhelt nextToken () metódus, amely egy string töredéket vesz be. Ez Húr a töredék külön elválasztó halmazként működik; amely alapján a tokenek ismét átszerveződnek. Például, ha át tudjuk adni ae' ban,-ben nextToken () módszer a karakterlánc tovább bontására a „elválasztó” alapjáne‘: Ezért egy adott „Helló, baeldung.com„A következő tokeneket állítjuk elő: A rendelkezésre álló tokenek számát felhasználhatjuk StringTokenizer’S méret módszer: Most próbáljuk meg használni StringTokenizer valós használati esetben. Vannak olyan esetek, amikor megpróbálunk adatokat olvasni a CSV fájlokból, és az adatokat a felhasználó által megadott elválasztó alapján elemezzük. Használata StringTokenizer, könnyen eljuthatunk oda: Itt a függvénynek két argumentuma van; egyet CSV fájlnévként (azaz olvassa el az erőforrásokból [src -> main -> erőforrások] mappa), a másikat pedig elválasztóként. E két argumentum alapján a CSV-adatok soronként kerülnek kiolvasásra, és minden sor használatával tokenizálódik StringTokenizer. Például a következő tartalmat tettük fel a CSV-be: Ezért a következő tokeneket kell létrehozni: Készítsünk egy gyors tesztesetet: Ebben a gyors bemutatóban áttekintettünk néhány gyakorlati példát az alapvető Java használatáról StringTokenizer. Mint mindig, a teljes forráskód is elérhető a GitHubon.public list getTokens (String str) {List tokenek = new ArrayList (); StringTokenizer tokenizer = új StringTokenizer (str, ","); while (tokenizer.hasMoreElements ()) {tokens.add (tokenizer.nextToken ()); } visszatérési tokenek; }
3.1. Java 8 megközelítés
public list getTokensWithCollection (String str) {return Collections.list (new StringTokenizer (str, ",")). stream () .map (token -> (String) token) .collect (Collectors.toList ()); }
3.2. Változatai StringTokenizer
3.3. Token testreszabása
tokens.add (tokenizer.nextToken ("e"));
H llo ba ldung.com
3.4. Token hossza
int tokenLength = tokens.size ();
3.5. Olvasás CSV fájlból
public list getTokensFromFile (String path, String delim) {List tokenek = new ArrayList (); String currLine = ""; StringTokenizer tokenizer; try (BufferedReader br = new BufferedReader (új InputStreamReader (Application.class.getResourceAsStream ("/" + elérési út)))) {while ((currLine = br.readLine ())! = null) {tokenizer = új StringTokenizer (currLine, elhatárolni); while (tokenizer.hasMoreElements ()) {tokens.add (tokenizer.nextToken ()); }}} catch (IOException e) {e.printStackTrace (); } visszatérési tokenek; }
1 | IND | India 2 | MY | Malajzia 3 | AU | Ausztrália
1 IND India 2 MY Malajzia 3 AU Ausztrália
3.6. Tesztelés
nyilvános osztályú TokenizerTest {private MyTokenizer myTokenizer = new MyTokenizer (); private list várhatóTokensForString = Arrays.asList ("Welcome", "to", "baeldung.com"); privát lista várhatóTokensForFile = Arrays.asList ("1", "IND", "India", "2", "MY", "Malajzia", "3", "AU", "Ausztrália"); @Test public void givenString_thenGetListOfString () {String str = "Welcome, to, baeldung.com"; Sorolja fel a actualTokens = myTokenizer.getTokens (str); assertEquals (várhatóTokensForString, ténylegesTokens); } @Test public void givenFile_thenGetListOfString () List actualTokens = myTokenizer.getTokensFromFile ("data.csv", "}
4. Következtetés