2012-04-03 37 views
17

Para una prueba JUnit, necesito una cadena que consta de varias líneas. Pero todo lo que obtengo es un String con una sola línea. He intentado lo siguiente:¿Cómo crear una cadena con retornos de carro?

String str = ";;;;;;\n" + 
       "Name, number, address;;;;;;\n" + 
       "01.01.12-16.02.12;;;;;;\n" + 
       ";;;;;;\n" + 
       ";;;;;;"; 

También probé \n\r en lugar de \n. System.getProperty ("line.separator") tampoco funciona. produce un \n en Cadena y no tiene retorno de carro. Entonces, ¿cómo puedo resolver eso?

+1

no soy un tipo java, pero sólo para ayudar a que aquí creo que la secuencia correcta para un retorno de carro es ** \ r \ n ** –

+0

Dónde tiene usted que no contiene una nueva línea? ¿En el depurador o en el archivo de salida? –

+0

La pregunta no está clara si miramos la respuesta aceptada. – Manu

Respuesta

0

Gracias por la respuesta. Me perdí que mis datos se almacenan en un List<String> que se pasa al método probado. El error fue que puse la cuerda en el primer elemento de ArrayList. Es por eso que pensé que el String consiste en una sola línea, porque el depurador me mostró solo una entrada.

3

Probar \r\n donde \r es el retorno de carro. También asegúrese de que su salida no tienen nueva línea, porque depurador puede mostrar caracteres especiales en forma de \n, \r, etc. \t

+0

Eso tampoco funciona. Ahora tengo una cadena que contiene \ r \ n en lugar de nuevas líneas. – Bevor

+1

¿Dónde haces eso que no contiene una nueva línea? ¿En el depurador o en el archivo de salida? –

10

La forma más rápida que conozco para generar un carácter de nueva línea en Java es: String.format("%n")

Por supuesto se puede poner lo que quiera en todo el %n como:

String.format("line1%nline2")

O incluso si usted tiene una gran cantidad de líneas:

String.format("%s%n%s%n%s%n%s", "line1", "line2", "line3", "line4")

+0

Hmmm, todavía tengo un trazador de líneas. – Bevor

+3

Tenga en cuenta que '% n' depende de la plataforma. –

33

Depende de lo que quiere decir con "líneas múltiples". Los diferentes sistemas operativos usan diferentes separadores de línea.

En Java, \r es siempre retorno de carro, y \n es avance de línea. En Unix, solo \n es suficiente para una nueva línea, mientras que muchos programas en Windows requieren \r\n. Puede obtener en la plataforma nueva línea predeterminada use System.getProperty("line.separator") o use String.format("%n") como se menciona en otras respuestas.

Pero en realidad, necesita saber si está intentando para producir nuevas líneas específicas del sistema operativo, por ejemplo, si este es texto que se va a transmitir como parte de un protocolo específico, entonces debería ver qué ese protocolo se considera una nueva línea. Por ejemplo, RFC 2822 define un separador de línea de \r\n y esto se debe usar incluso si se está ejecutando en Unix. Entonces todo se trata de contexto.

1

Haga lo siguiente: Paso 1: Su cadena

String str = ";;;;;;\n" + 
      "Name, number, address;;;;;;\n" + 
      "01.01.12-16.02.12;;;;;;\n" + 
      ";;;;;;\n" + 
      ";;;;;;"; 

Paso 2: Basta con sustituir todos "\ n" con "% n" el resultado es idéntico al

String str = ";;;;;;%n" + 
      "Name, number, address;;;;;;%n" + 
      "01.01.12-16.02.12;;;;;;%n" + 
      ";;;;;;%n" + 
      ";;;;;;"; 

Aviso I' ve sólo hay que poner "% n" en lugar de "\ n"

Paso 3: Ahora sólo tiene que llamar formato()

str=String.format(str); 

Eso es todo lo que tienes que hacer.

0

Trate de caracteres añadidos .append('\r').append('\n'); en lugar de cuerdas .append("\\r\\n");

Cuestiones relacionadas