web-dev-qa-db-fra.com

Diviser les mots en lettres en Java

Comment pouvez-vous diviser un mot en ses lettres constitutives?

Exemple de code qui ne fonctionne pas

 class Test {
         public static void main( String[] args) {
             String[] result = "Stack Me 123 Heppa1 oeu".split("\\a");                                                                                   

             // output should be
             // S
             // t
             // a
             // c
             // k
             // M
             // e
             // H
             // e
             // ...
             for ( int x=0; x<result.length; x++) {
                 System.out.println(result[x] + "\n");
             }
         }
     }

Le problème semble être dans le caractère \\a. Ce devrait être un [A-Za-z].

Vous devez utiliser split("");.

Cela le divisera par chaque personnage.

Cependant, je pense qu'il serait préférable d'itérer sur les caractères d'un String comme ceci:

for (int i = 0;i < str.length(); i++){
    System.out.println(str.charAt(i));
}

Il n'est pas nécessaire de créer une autre copie de votre String sous une forme différente.

46
jjnguy

"Stack Me 123 Heppa1 oeu".toCharArray() ?

29
Zed

Y compris les chiffres mais pas les espaces:

"Stack Me 123 Heppa1 oeu".replaceAll("\\W","").toCharArray();

=> S, t, a, c, k, M, e, 1, 2, 3, H, e, p, p, a, 1, o, e, u

Sans chiffres ni espaces:

"Stack Me 123 Heppa1 oeu".replaceAll("[^a-z^A-Z]","").toCharArray()

=> S, t, a, c, k, M, e, H, e, p, p, a, o, e, u

6
p3t0r

Vous pouvez utiliser

String [] strArr = Str.split("");
5
user5650798
 char[] result = "Stack Me 123 Heppa1 oeu".toCharArray();
3
Dave

Je suis à peu près sûr qu'il ne veut pas que les espaces soient générés.

for (char c: s.toCharArray()) {
    if (isAlpha(c)) {
       System.out.println(c);
     }
}
2
Gandalf
String[] result = "Stack Me 123 Heppa1 oeu".split("**(?<=\\G.{1})**");
System.out.println(Java.util.Arrays.toString(result));