2012-03-04 21 views
5

Estoy buscando tomar una cadena y dividirla en una matriz en los saltos de línea (\ n) Intenté usar split pero eso quita el delimitador. Necesito que se guarde el \n al final de cada línea si existe. ¿Ya existe algo como esto o tendré que codificarlo yo mismo?Algo similar a split()?

+0

gracias chicos! arregló mi problema Lo intenté un millón de veces para entender regex, todavía no lo he descifrado todavía. – bwoogie

+0

Deberías echarle un vistazo al tutorial al que me he vinculado, ya que es el mejor tutorial de expresiones regulares que he visto hasta ahora. –

Respuesta

4

He intentado usar split pero eso quita el delimitador. Necesito que \ n se guarde al final de cada línea si existe.

Todavía puede usarlo y preservar el salto de línea si usa mirar hacia delante o hacia atrás en su expresión regular. Mira el mejor tutorial de expresiones regulares que conozco:
Regex Tutorial
Look-Around section of the Regex Tutorial.

Por ejemplo:

public class RegexSplitPageBrk { 


    public static void main(String[] args) { 
     String text = "Hello world\nGoodbye cruel world!\nYeah this works!"; 
     String regex = "(?<=\\n)"; // with look-behind! 

     String[] tokens = text.split(regex); 

     for (String token : tokens) { 
     System.out.print(token); 
     } 
    } 
} 

La visión hacia adelante o buscar-detrás (también llamado "look-around") es no destructivo para los personajes que coincidan.

+2

En lugar de simplemente decir "lo estás haciendo mal", ¿por qué no proporcionar la ... solución? – debracey

+0

@debracey: ese fue el plan desde el principio. A menudo publico una respuesta inicial y luego agrego más a ella, para no trabajar en las preguntas que se eliminan. Odio cuando eso ocurre. Tampoco me gusta publicar el código sin probarlo primero. –

+1

Sí, lo vi editar la publicación :-) – debracey

1

Otra solución es simplemente agregando los delimitadores después de dividir

String delimiter = "\n" 
String[] split = input.split(delimiter); 
for(int i = 0; i < split.length; i++){ 
    split[i] += delimiter; 
} 
Cuestiones relacionadas