2009-09-03 12 views

Répondre

5

Si par tableau de chaîne vous dire tableau de char:

public class Test 
{ 
    public static void main(String[] args) 
    { 
     String test = "aabbab "; 
     char[] t = test.toCharArray(); 

     for(char c : t) 
      System.out.println(c);  

     System.out.println("The end!");  
    } 
} 

Dans le cas contraire, la fonction String.split() pourrait transformer une chaîne en un tableau de String

Voir les String.split exemples

/* String to split. */ 
String str = "one-two-three"; 
String[] temp; 

/* delimiter */ 
String delimiter = "-"; 
/* given string will be split by the argument delimiter provided. */ 
temp = str.split(delimiter); 
/* print substrings */ 
for(int i =0; i < temp.length ; i++) 
    System.out.println(temp[i]); 

Le input.split("(?!^)") proposé par Joachim dans his answer est basé sur:

  • un '?!' lookahead négatif (voir Lookaround) de largeur nulle
  • le caret '^' comme Anchor pour correspondre au début de la chaîne du motif de regex est appliquée à

Tous caractère qui n'est pas le premier sera divisé. Une chaîne vide ne sera pas divisée mais retournera un tableau vide.

+1

thats un tableau de caractères, pas un tableau de chaînes – Chii

+0

@ Chihi: vrai, j'ai illustré les deux résultats maintenant. 'char []' et 'String []' – VonC

+0

très bonne illustration. – Zaki

0

Vous pouvez utiliser String.split (String regex):

String input = "aabbab"; 
String[] parts = input.split("(?!^)"); 
+1

Comme chaque caractère est un séparateur, aucun caractère ne sera une donnée, donc vous obtiendrez un tableau vide. –

+0

Vous avez raison. Ton regex est meilleur. –

+0

Merci ne sait pas qu'il peut être utilisé avec split mais pourquoi il est divisé avec?! ^? cos une chaîne n'a pas ça là-dedans? – gingergeek

21
String[] result = input.split("(?!^)"); 

Qu'est-ce que cela n'est divisé la chaîne d'entrée sur toutes les chaînes vides qui ne sont pas précédés par le début de la chaîne.

+0

Merci les gars ça fonctionne comme de la magie.Cool – gingergeek

+1

Bonne regex, +1. – VonC

+0

Quand je fais. String test = "Ceci est un test"; puis String [] test2 = test.split ("(?!^) "); Le tableau ne contient que les caractères du premier mot ..? –

2

Vous voulez dire que vous voulez faire "aabbab" .toCharArray(); ? Ce qui retournera un tableau de caractères. Ou voulez-vous réellement que le tableau résultant contienne des objets de chaîne de caractère unique?

15
String x = "stackoverflow"; 
String [] y = x.split(""); 
Questions connexes