2011-06-05 18 views
14

Estoy usando un escáner para tomar una entrada y, con suerte, dividirla en fragmentos. Quiero que se divida utilizando delimitadores de palabras completas. Así que ahora tengo:Java: uso de múltiples delimitadores en un escáner

Scanner scanner = new Scanner("1 imported bottle of perfume at 27.99"); 
    scanner.useDelimiter("\\sdelimitOne\\s"); 

Así que con la entrada "palabra palabra palabra palabra delimitOne delimitTwo palabra palabra" Recibo de salida:

word word 
word word delimitTwo word word 

que estaba esperando

scanner.useDelimiter("\\sdelimitOne\\s\\sdelimitTwo\\s"); 

podría funcionar, pero por desgracia no.

¿Cómo hago para lograr el siguiente resultado:

word word 
word word 
word word 

?

Respuesta

18

de Wikipedia:

| : El operador de elección (aka alternancia o conjunto de unión) coincide con la expresión anterior o la expresión después del operador. Por ejemplo, abc | def coincide con "abc" o "def".

así, scanner.useDelimiter("\\sdelimitOne\\s|\\sdelimitTwo\\s"); es lo que necesita.

+1

Ah fantástico, estaba esperando que fuera una omisión tan tonta. Muchas gracias. –

+1

Lo tengo trabajando reemplazando '\\ s *' con '\\ s'. –

Cuestiones relacionadas