Prevod reťazca na prúd znakov

1. Prehľad

Java 8 predstavila Prúd API s funkčnými operáciami na spracovanie sekvencií. Ak si o nej chcete prečítať viac, pozrite si tento článok.

V tomto rýchlom článku uvidíme, ako previesť súbor String do a Prúd jednotlivých znakov.

2. Konverzia pomocou znaky ()

The String API má novú metódu - znaky () - pomocou ktorého môžeme získať inštanciu Svrhnúť sa od a String objekt. Toto jednoduché API vracia inštanciu IntPrúd zo vstupu String.

Jednoducho povedané, IntStream obsahuje celočíselné zastúpenie znakov z String objekt:

String testString = "Reťazec"; IntStream intStream = testString.chars ();

Je možné pracovať s celočíselným zastúpením znakov bez ich prevodu na ich znaky Postava ekvivalent. To môže viesť k niektorým menším zvýšeniam výkonnosti, pretože nebude potrebné uvádzať každé celé číslo do a Postava objekt.

Ak však máme zobraziť znaky na čítanie, musíme celé čísla previesť na ľudsky prívetivé Postava forma:

Stream znakovejStream = testString.chars () .mapToObj (c -> (char) c);

3. Konverzia pomocou codePoints ()

Prípadne môžeme použiť codePoints () metóda na získanie inštancie IntStream od a String. Výhodou použitia tohto API je, že s doplnkovými znakmi Unicode je možné efektívne narábať.

Doplnkové znaky sú reprezentované náhradnými pármi Unicode a budú zlúčené do jedného kódového bodu. Týmto spôsobom môžeme správne spracovať (a zobraziť) akýkoľvek symbol Unicode:

IntStream intStream1 = testString.codePoints ();

Musíme zmapovať vrátených IntStream do Prúd zobraziť používateľom:

Stream znakováStream2 = testString.codePoints (). MapToObj (c -> (char) c); 

4. Prepočet na a Prúd jedného znaku Struny

Doteraz sa nám podarilo získať Prúd znakov; čo keď chceme a Prúd jedného znaku Stringnamiesto toho?

Ako sme už uviedli vyššie v článku, použijeme buď codePoints () alebo znaky () metódy na získanie inštancie IntStream ktoré teraz môžeme mapovať Prúd.

Proces mapovania zahŕňa najskôr prevod celých hodnôt na ich príslušné znakové ekvivalenty.

Potom môžeme použiť String.valueOf () alebo Character.toString () previesť znaky na a String objekt:

Stream stringStream = testString.codePoints () .mapToObj (c -> String.valueOf ((char) c));

5. Záver

V tomto rýchlom výučbe sa naučíme získavať prúd Postava od a String objekt buď zavolaním codePoints () alebo znaky () metódy.

To nám umožňuje naplno využívať výhody Prúd API - na pohodlnú a efektívnu manipuláciu so znakmi.

Útržky kódu ako vždy nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found