2010-10-23 41 views
1

J'ai une entrée qui ressemble à: (0 0 0)
Je voudrais ignorer la parenthèse et ajouter seulement les nombres, dans ce cas 0, à un arraylist.
J'utilise scanner pour lire un fichier, ce qui est ce que j'ai jusqu'à présentIgnorer les parenthèses avec un marqueur de chaîne?

transitionInput = data.nextLine(); 
    st = new StringTokenizer(transitionInput,"()", true); 
    while (st.hasMoreTokens()) 
    { 
     transition.add(st.nextToken(",")); 
    } 

Cependant, la sortie ressemble à ceci [(0 0 0)]
Je voudrais ignorer les parenthèses

+0

pourriez-vous donner quelques exemples de plus? Est-ce juste le premier et le dernier caractère, alors vous pouvez faire 'input = input.substring (1, input.length() - 1);' – aioobe

+0

que fait la virgule (",") dans votre règle de jeton? – Thilo

Répondre

2

Vous êtes d'abord utilisez () comme délimiteurs, puis de passer à ,, mais vous passez avant d'extraire le premier jeton (le texte entre parenthèses).

Qu'est-ce que vous avez probablement l'intention de faire est la suivante:

transitionInput = data.nextLine(); 
st = new StringTokenizer(transitionInput,"()", false); 
if (st.hasMoreTokens()) 
{ 
    String chunk = st.nextToken(); 
    st = new StringTokenizer(chunk, ","); 
    while (st.hasMoreTokens()) 
    { 
     transition.add(st.nextToken()); 
    } 
} 

Ce code suppose que l'expression commence et se termine toujours avec des parenthèses. Si tel est le cas, vous pouvez également les supprimer manuellement en utilisant String.substring(). , Vous pouvez également envisager d'utiliser String.split() pour faire la séparation réelle:

String transitionInput = data.nextLine(); 
transitionInput = transitionInput.substring(1, transitionInput.length() - 1); 
for (String s : transitionInput.split(",")) 
    transition.add(s); 

Notez que les deux exemples supposent que les virgules sont utilisés comme séparateurs, comme dans votre exemple de code (bien que le texte de votre question, dit autrement)

3

Que diriez-vous

for(String number: transitionInput 
     .replace('(', ' ').replace(')', ' ').split("\\s+")){ 
    transition.add(number); 
} 
0

Une autre variante

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.StringTokenizer; 


public class simple { 


public static void main(String[] args) 
{ 

    List transition = new ArrayList(); 
    String transitionInput="(0 0 0)"; 
    transition = Arrays.asList((transitionInput.substring(1,transitionInput.length()-1)).split("\\s+")); 
    System.out.println(transition); 
} 
} 

sortie: [0, 0, 0]

0
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.StringTokenizer; 


public class simple { 


public static void main(String[] args) 
{ 

    List transition = new ArrayList(); 
    String transitionInput="(0 0 0)"; 
    transition = Arrays.asList((transitionInput.substring(1,transitionInput.length()-1)).split("\\s+")); 
    System.out.println(transition); 
} 
}