Yshopnoosa.com

Traversera genom en strängvariabel i Java

Traversera genom en Java strängvariabel är till hjälp när du behöver för att bearbeta varje tecken i strängen separat. En Java-strängen innehåller ett antal tecken, till exempel en engelsk mening. Till exempel kan du Visa varje andra ord i en mening som en del av ett ord scramble spel. Det finns flera sätt att korsa en sträng, alltifrån upprepade anrop av funktionen "charAt" till iterera genom ett "CharacterIterator" objekt.

Standardiserad teknik

En vanlig "för" loop med en upprepade anrop av funktionen "charAt" är det enklaste sättet att korsa en String-variabel.

String str = "text här";

för (int n = 0; n < str.length(); n ++) {char c = str.charAt(n);System.out.println(c);}

Funktionen "charAt" Returnerar tecknet på ett särskilt index i en konstant tid. Slingan har åtkomst till det första tecknet i strängen och itererar framåt ett tecken i taget tills den når slutet av strängen. Funktionen "System.out.println" visar värdet på tecknet.

Korsa en sträng bakåt

Korsa en String-variabel i omvänd ordning genom start från sista tecknet och flytta bakåt tills loopen når det första tecknet i strängen.

String str = "text här";

för (int n=str.length ()-1; n > = 0; n--) {char c = str.charAt(n);System.out.println(c);}

Färdas med en "för-varje" Loop

Det är möjligt att iterera genom en sträng med en "för-varje" konstruktion, men måste du anropa funktionen "toCharArray()", som skapar en karaktär matris från String-variabel.

String str = "text här";

för (char c: str.toCharArray()) {System.out.println(c);}

Tyvärr kommer funktionen "toCharArray()" med en overhead kosta eftersom det måste skapa en helt ny karaktär matris strängvariabel.

Färdas med ett "CharacterIterator"

Ett annat sätt att korsa en sträng är genom att skapa ett "CharacterIterator" objekt från strängen och sedan söka igenom objektet med en normal "för" loop.

CharacterIterator str_it = ny StringCharacterIterator ("text här");

för (char c=str_it.first(); c! = CharacterIterator.DONE; c=str_it.next()) {

System.out.println(c);

}

Alternativt kan du iterera genom "CharacterIterator" i omvänd ordning med "sista" och "föregående" funktioner.

för (char c=str_it.last(); c! = CharacterIterator.DONE; c=str_it.previous()) {

System.out.println(c);

}