2010-11-04 7 views
1

Je cherche à diviser une liste de chaînes comme je itérer dans la liste imaginez ce qui suit comme la liste.Fractionner une chaîne dans Java lorsqu'elle est extraite d'une liste?

["StringA.StringB.StringC"]["StringA.StringB.StringC"]["StringA.StringB.StringC"]["StringA.StringB.StringC"] 

donc je veux parcourir la liste déroulante sur chaque chaîne ("StringA.StringB.StringC")

veulent ensuite séparer par le "." et attribuer STRINGA à une variable String - Chaîne B à un et chaîne C. Perform certains travaillent et passent à l'autre.

Des idées comment je peux le faire?

Répondre

4

Ceci est une tâche assez simple. Utilisez simplement foreach pour parcourir la liste, puis divisez la chaîne sur le caractère ..

for(String s: list) { 
    String[] splitString = s.Split("\\."); 
    // do work on the 3 items in splitString 
} 

La splitString variables aura une longueur de 3.

+0

doux! Merci pour cela! – Julio

+0

@Franco, content de pouvoir aider. – jjnguy

+2

Accepter sa réponse quand la limite de temps est écoulée, Franco. Cela fait partie du fonctionnement du SO ... – AHungerArtist

0
List<String> strings=new ArrayList<String>(); 

for (String s:stringList){ 
    strings.addAll(Arrays.asList(s.split("\\."))); 
} 

alors vous aurez toutes les chaînes dans une liste et vous pouvez itérer sur eux.

+2

Ne fonctionnera pas comme prévu :) –

+0

1) l'argument de 'split' est une regex, pas une chaîne de caractères. 2) la question ne demande pas que les chaînes de composants soient ajoutées à une liste ... il veut * "effectuer du travail et passer à la suivante" *. –

1

Bien sûr! Vous voulez juste String#split().

for (String s : myList) 
{ 
    String[] tokens = s.split("\\."); 
    // now, do something with tokens 
} 

Vous devez échapper à la période correspondante de l'argument split() parce que la chaîne est interprétée comme une regex pattern, et une période de conversion unescape (".") correspond à tout caractère - pas ce que vous voulez!

0

Vous avez donc une liste de chaînes [] qui sont des chaînes concaténées. À moins qu'il s'agisse d'une sorte de structure de données héritée, vous feriez peut-être mieux de rendre cela plus uniforme d'une manière ou d'une autre.

Dans tous les cas, l'itération est assez simple -

List<String[]> l = .... 

for (String[] outer: l) { 
     for (String s: outer){ 
      for (String inner: s.split("\\.")) // s.split takes a regex and returns a String[], 
       // inner has your inner values now 
0

La classe String a la méthode split(String regex) qui divise la chaîne par une expression régulière. Si vous ne voulez pas avoir à gérer les expressions régulières, vous pouvez utiliser la très pratique classe StringUtils d'Apache Commons Lang.

Questions connexes