2011-02-12 6 views
0

Je suis en train de lire l'entrée suivante avec Scanner:délimiteurs Java Scanner aider

a -> b; 
c -> d; 
e -> f; 
g -> h; 
i -> j; 

et je veux ma sortie soit:

a 
b 
c 
d 
e 
f 
g 
h 

J'ai déjà essayé:

s.replaceAll("[->;]", "").trim(); 

et

sc.useDelimiter("[->;]"); 

Mais chaque fois que je vois ceci:

a 

b 
c 

d 
e 

f 
g 

h 

Alors je reçois 12 caractères (espaces compris bien sûr) au lieu de 8. Est-ce que quelqu'un sait comment résoudre ce problème? J'apprécie ton aide.

Répondre

3

Essayez ceci:

sc.useDelimiter("\\s*->\\s*|;\\s*"); 

Le code:

String text = "a -> b; \n" + 
     "c -> d; \n" + 
     "e -> f;\n" + 
     "g -> h;\n" + 
     "i -> j; "; 
Scanner sc = new Scanner(text).useDelimiter("\\s*->\\s*|;\\s*"); 
while(sc.hasNext()) { 
    System.out.println(sc.next()); 
} 

impressions:

a 
b 
c 
d 
e 
f 
g 
h 
i 
j 

Ou même sc.useDelimiter("[->\\s;]+") si aucun des [->\\s;] peut être une partie des jetons que vous êtes intéressé par.

+0

merci beaucoup. Cela fonctionne parfaitement. – Loolooii

+0

@Nima, de rien! –