2009-03-12 12 views
2

Salut à tous Je suis un nouveau venu ici,Essayer d'utiliser String.split() regex sur chaîne créée avec Formatter

J'utilise le code suivant à partir d'une bibliothèque open source (matrice pour Java toolkits) qui produit les éléments suivants matrice

1000  1000     5 
    3   5 1.000000000000e+00 

Je suis en train de faire une scission de chaîne qui me retourner 1000,1000,5

J'ai essayé d'utiliser String[] parts = str.trim().split("\\s");

mais je T semble utiliser le \ s comme un jeton de chaîne est faux, aucune idée que je devrais utiliser à la place?

merci beaucoup!

public String toString() { 
     // Output into coordinate format. Indices start from 1 instead of 0 
     Formatter out = new Formatter(); 

     out.format("%10d %10d %19d\n", numRows, numColumns, Matrices 
       .cardinality(this)); 

     for (MatrixEntry e : this) 
      if (e.get() != 0) 
       out.format("%10d %10d % .12e\n", e.row() + 1, e.column() + 1, e 
         .get()); 

     return out.toString(); 
    } 

Répondre

3

Vous devez scinder sur un nombre illimité d'espaces, pas seulement sur des espaces uniques. Cela est, ajouter « + » à votre regexp comme ceci:

String[] parts = str.trim().split("\\s+"); 
+0

Merci pour la réponse rapide! ça marche! – freshWoWer

2

StringTokenizer devrait également être en mesure de faire ce que vous voulez.

String s = " 1000  1000     5"; 
java.util.StringTokenizer st = new java.util.StringTokenizer(s); 
while (st.hasMoreTokens()) { 
    System.out.println(st.nextToken()); 
} 
+0

belle solution alternative ainsi beaucoup! – freshWoWer

Questions connexes