2010-04-20 13 views
21

in Python posso costruire una stringa HTML, senza preoccuparsi di sfuggire caratteri speciali come < o "semplicemente racchiudendo la stringa tra virgolette triple come:semplice// heredoc modo diretto di costruire una stringa HTML in Java

html_string = """ 
<html> 
<body> 
<p>My text with "quotes" and whatnot!<p> 
</body> 
</html> 
""" 

c'è un modo simile per fare questo in Java?

+4

Per riferimento futuro , questi tipi di cose sono solitamente chiamati [heredocs] (http://en.wikipedia.org/wiki/Heredoc) –

+0

[Questa risposta] (http://stackoverflow.com/a/121513/403455) mostra come incollare stringhe con escape su più righe in Eclispe. –

+0

Per le citazioni: http://stackoverflow.com/questions/3034186/in-java-is-there-a-way-to-write-a-string-literal-without-having-to-escape-quote, per la multilinea: http://stackoverflow.com/questions/878573/java-multiline-string –

risposta

20

Esso non può essere fatto in Java come in Python. Tuttavia, se si utilizza Eclipse, andare a Finestra-> Preferenze-> Java-> Editor-> Digitazione L'ultima casella di controllo è "Esci dal testo quando si incolla in una stringa letterale". Controllalo. Ora quando si incolla quando il cursore si trova tra virgolette, verrà sfuggito.

+6

C'è sempre una casella di controllo da qualche parte; o) –

1

No, ma alcuni strumenti fuga per voi quando lo si incolla, come Eclipse.

+0

Bello, non lo sapevo! Come lo faresti in Eclipse? Sto eseguendo Eclipse Galileo e quando incollo il codice HTML è appena stato copiato. –

+1

Finestra> Preferenze> Java> Editor> Controllo digitazione Esci dal testo quando inserisci una stringa letterale – Beothorn

0

nel codice sorgente di Java, doppio apice è un carattere speciale, usato per dichiarare stringhe letterali. Non puoi avere una doppia citazione in un letterale String senza sfuggirlo.

In generale, proverei a evitare le stringhe di codifica hard come quella nel codice sorgente, in particolare se mi sono trovato a farlo molto - come hai notato, sono un problema affrontare come fonte e potrebbe essere abbastanza probabile che cambi, nel qual caso si potrebbe fare senza ricompilare. Se non è necessario fornire parti di runtime ai dati di testo, è possibile ottenere qualcosa di semplice come leggere i dati da un file di proprietà oppure è possibile utilizzare un motore di template come Apache Velocity per mantenere separati i dati dei caratteri e comunque sostituire le variabili in fase di esecuzione - molti degli esempi nella guida utente collegata fanno esattamente questo con l'HTML.

+1

Sono assolutamente d'accordo, ma per un test rapido (per individuare un bug) mi piace sempre avere alcuni trucchi quick-n-dirty nella mia manica ; o) –

+0

Accetto: tutto dipende dal contesto. Sembra che il trucco di Eclipse sia ftw in questo caso! – Brabster

0

riecheggiare trucco di benjismith da un similar question, è possibile utilizzare un carattere alternativo e sostituirli dopo:

String myString = "using `backticks` instead of quotes".replace('`', '"'); 

ho trovato utile quando stavo scrivendo test con JSON

String json = "{`kind`:`file`,`sid`:802,`rid`:5678 ,`attrs`:{`name`:`FILE-WG-2468`}}".replace('`', '"'); 
// vs 
String json = "{\"kind\":\"file\",\"sid\":802,\"rid\":5678 ,\"attrs\":{\"name\":\"FILE-WG-2468\"}}"; 
Problemi correlati