2010-01-29 24 views
204

Desafortunadamente, Java no tiene sintaxis para literales de cadenas de varias líneas. No hay problema si el IDE hace que sea fácil trabajar con construcciones comoPegue una cadena Java de varias líneas en Eclipse

String x = "CREATE TABLE TEST (\n" 
      + "A INTEGER NOT NULL PRIMARY KEY, \n" 
      ... 

¿Cuál es la manera más rápida para pegar una cadena de múltiples líneas del portapapeles en fuente de Java usando Eclipse (de una manera que se crea automáticamente un código como lo anterior).

+0

posible duplicado de [Surround entre comillas] (http://stackoverflow.com/questions/121199/surround-with-quotation-marks) –

Respuesta

392

Bien, acabo de found the answer (en Stackoverflow, nada menos).

Eclipse tiene una opción para que copiar y pegar de texto de varias líneas en literales de cadena dará lugar a nuevas líneas citadas:

Preferencias/Java/Editor/Typing/"Escape de texto al pegar en una cadena literal "

+44

Debe tenerse en cuenta que, después de habilitar la función, aún debe escribir dos comillas y luego pegar el texto dentro de esas marcas. – Lycha

+53

Entonces, ¿por qué en el mundo no está habilitada esta opción por defecto? –

+0

Para NetBeans hay un complemento: http://plugins.netbeans.org/plugin/2748/?show=true – mjn

-8

Por lo que sé, esto parece estar fuera del alcance de un IDE. Copiando, puede copiar la cadena y luego tratar de formatearla usando ctrl + shift + F Lo más común es que estas cadenas multilínea no se usen codificadas, sino que se usarán desde la propiedad o archivos xml. Que se pueden editar en un punto posterior de tiempo sin la necesidad de cambio de código

+2

No estoy de acuerdo. Esto está totalmente en el alcance de un IDE. Después de todo, puede editar una Cadena y escribir Enter en medio de ella y Eclipse crea una cadena Java adecuada de varias líneas. – Thilo

+0

@Thilo ¡Tu pregunta era copiar una cadena en un editor que no estaba en un formato como el IDE, pero aún así quieres que automáticamente haga estos arreglos para ti! Lo cual creo que está fuera de la vista del IDE. Cuénteme una cosa cuál es exactamente su requisito. ¿Por qué quiere copiar una cadena? Para que tengamos claridad del problema. Pregunta de edición de archivos en lugar de comentar – Ravisha

+2

He encontrado muchos casos de uso donde tiene valores de texto grandes que desea usar directamente en código Java (por ejemplo, en una prueba unitaria donde quiere probar un método con una entrada muy larga). Por lo tanto, a menudo tendrá que pegar un String grande y multilínea, como un texto Lorem Ipsum generado en el programa Java.Parece que el IDE tiene el objetivo de admitir una operación de este tipo sin forzar al usuario a dividir manualmente el texto y rodear cada línea con comillas y +. – ammianus

4

Si su construcción de ese SQL en una herramienta como TOAD u otro IDE orientado a SQL, a menudo tienen marcas de copia en el portapapeles. Por ejemplo, TOAD tiene un CTRL + M que toma el SQL en su editor y hace exactamente lo que usted tiene en su código anterior. También cubre el reverso ... cuando agarras una cadena formateada de tu Java y quieres ejecutarla en TOAD. Pegar el SQL nuevamente en TOAD y realizar un CTRL + P para eliminar las comillas de varias líneas.

+0

CNTL + M = Hacer código. En la Vista> Opciones de Toad puede establecer en qué formato está el 'código'. Java, por ejemplo, está allí. – checketts

11

puede utilizar este plugin de Eclipse: http://marketplace.eclipse.org/node/491839#.UIlr8ZDwCUm esta es una de varias líneas emergente editor de cadenas. Coloca el cursor en una cadena literal de prensa ctrl - cambio - alt - m y pegar el texto.

+2

Lo instalé en Juno, lo reinicié pero no hace nada. El combo no hace nada y tampoco puedo encontrar un elemento en el menú contextual :-( –

2

Ver: Multiple-line-syntax

También soporta las variables en la cadena de varias, por ejemplo:

String name="zzg"; 
String lines = ""/**~!{ 
    SELECT * 
     FROM user 
     WHERE name="$name" 
}*/; 
System.out.println(lines); 

Salida:

SELECT * 
    FROM user 
    WHERE name="zzg" 
Cuestiones relacionadas