Come è possibile ripetere una stringa in Java?Come eseguire iterazioni su una stringa
Sto cercando di utilizzare uno stile foreach ciclo for
for(char x : examplestring)
{
//action
}
Come è possibile ripetere una stringa in Java?Come eseguire iterazioni su una stringa
Sto cercando di utilizzare uno stile foreach ciclo for
for(char x : examplestring)
{
//action
}
Se si desidera utilizzare circuito maggiore, è possibile convertire la stringa charArray
for (char ch : exampleString.toCharArray()){
System.out.println(ch);
}
Java String
s non sono cahracter Iterable
. Avrai bisogno di:
for (int i=0; i<examplestring.length(); i++) {
char c = examplestring.charAt(i);
...
}
imbarazzante lo so.
Utilizzando Guava (r07) si può fare questo:
for(char c : Lists.charactersOf(someString)) { ... }
Questo ha la comodità di usare foreach mentre non copia la stringa in un nuovo array. Lists.charactersOf
restituisce un visualizza della stringa come List
.
+1. Non sapevo che r07 fosse fuori. Sebbene, interessante, questa è la più lenta delle opzioni disponibili. Ci sono voluti più del 49% per completare di un test 'charAt' equivillante. – Gunslinger47
@ Gunslinger47: Immagino che la necessità di inscatolare e rimuovere ogni char per questo rallenterebbe un po '. Il metodo è probabilmente più destinato ad adattare stringhe da utilizzare con varie API basate su 'Collection' piuttosto che per l'iterazione come questa. – ColinD
ne dite di questo
for (int i=0;i < str.length();i++)
{
System.out.println(str.substring(i,i+1));
}
Questo è molto peggio che la mia versione di copia il 'STRING' ad un array temporaneo che viene restituito dalla funzione. – cletus
@cletus: non è possibile accedere alla matrice originale: la stringa è immutabile, quindi la stessa matrice dovrebbe essere la sorgente. Ma in Java è sempre possibile modificare un array, il che causerebbe l'interruzione delle ottimizzazioni Java (internig). Ad ogni modo una copia è più veloce di molti 'length()' e 'charAt()'. – gertas
@gertas è esattamente quello che stavo dicendo. Poiché gli array sono mutabili, devono essere copiati in modo difensivo. Quindi hai il costo di quella copia per cosa? Zucchero sintattico Ecco perché questa è una cattiva idea. – cletus