2012-05-12 7 views
12

todos.Java divide una cadena por espacio, nueva línea, pestaña, puntuación

que tienen una cadena como esta

String message = "This is the new message or something like that, OK"; 

y quiero dividirlo en serie

String[] dic = {"this", "is", "the", "new", "message", "or", "something", "like", "that", "OK"}; 

Solía ​​

message = message.split("\\s+"); 

El problema era que contenía "que, "no" que "como yo quiero". Por favor enséñame cómo resolverlo. Gracias

+0

posible duplicado de [división de cadenas a través de expresiones regulares de puntuacion y espacios en blanco etc en java] (http://stackoverflow.com/ preguntas/7384791/splitting-strings-through-regular-expressions-by-punctuation-and-whitespace-etc) – assylias

Respuesta

24

Usted puede hacer

String[] dic = message.split("\\W+"); 

El \\W no significa un carácter alfanumérico.

+0

¡Gracias a todos! Elijo la respuesta de Garrett Hall. –

3

Uso Guava:

// define splitter as a constant 
private static final Splitter SPLITTER = 
Splitter.on(CharMatcher.WHITESPACE.or(CharMatcher.is(',')) 
     .trimResults() 
     .omitEmptyStrings(); 
// ... 

// and now use it in your code 
String[] str = Iterables.toArray(SPLITTER.split(yourString), String.class); 
+0

Mirando el título, el objetivo es eliminar toda la puntuación, no solo ',' – assylias

+0

@assylias ok, entonces sería 'Splitter.on (CharMatcher.JAVA_LETTER.negate()). TrimResults(). OmitEmptyString()' –

3

Puede utilizar StringTokenizer

String message = "This is the new message or something like that, OK"; 
String delim = " \n\r\t,.;"; //insert here all delimitators 
StringTokenizer st = new StringTokenizer(message,delim); 
while (st.hasMoreTokens()) { 
    System.out.println(st.nextToken()); 
} 
+0

esto funciona genial gracias hombre! –

Cuestiones relacionadas