Digamos que você tenha um literal String com muitas aspas dentro dele. Você poderia escapar de todos eles, mas é uma dor e difícil de ler.
Em alguns idiomas, você pode simplesmente fazer isso:
foo = '"Hello, World"';
Em Java, entretanto, ''
é usado para char
s, então você não pode usá-lo para String
s desta forma. Algumas linguagens têm sintaxe para contornar isso. Por exemplo, em python, você pode fazer isso:
"""A pretty "convenient" string"""
Java tem algo semelhante?
System.out.println(mapperObj.writeValueAsString(mapperObj.readValue(str, Object.class)));
Respostas:
A resposta é não, e a prova reside na Especificação da linguagem Java :
Como você pode ver, um
StringLiteral
pode ser apenas vinculado"
e não pode conter caracteres especiais sem escapes.Uma observação lateral: você pode incorporar Groovy dentro de seu projeto, isso estenderá a sintaxe do Java, permitindo que você use
'''multi line string '''
,' "string with single quotes" '
e também"string with ${variable}"
.fonte
Não, e sempre me aborreceu com a falta de diferentes sintaxes de strings literais em Java.
Aqui está um truque que usei de vez em quando:
Eu principalmente só faço algo assim para um campo estático. Como é estático, o código de substituição de string é chamado uma vez, na inicialização da classe. Portanto, a penalidade de desempenho do tempo de execução é praticamente inexistente e torna o código consideravelmente mais legível.
fonte
Atualização de dezembro de 2018 (12 meses depois):
Literais de string brutos (que estão na lista âmbar ) não chegarão ao JDK 12.
Veja as críticas aqui .
Pode haver em uma versão futura do Java (10 ou mais).
Veja JEPS 8196004 de janeiro de 2018: ( "JEP" é o "Programa de Melhoria JDK" )
Então, em vez de:
Você seria capaz de digitar:
Arrumado!
Mas ainda é apenas um rascunho : ele precisará ser postado, enviado, ser um candidato e financiado antes de ser concluído e entrar no próximo JDK.
fonte
Resposta simples: Não.
Para strings mais longas que devem ser escapadas, eu geralmente as leio de algum recurso externo.
fonte
você também pode usar StringEscapeUtils do apache commons
ATUALIZAÇÃO : Se alguém estiver interessado em alguns exemplos, aqui está um link útil: https://dzone.com/articles/commons-lang-3-improved-and-powerful-StringEscapeUtils
fonte
String
s, portanto, não há como ter um valor bem formatado em seu código. Presumivelmente, você poderia usar esses métodos para ler de um arquivo em umString
, mas não acho que essa seja a questão aqui.O seguinte parece funcionar para mim:
Eu acho que porque char é o tipo de variável primitiva para String, Strings e chars podem ser combinados (pelo menos o compilador Eclipse não parece reclamar).
fonte
Se você quiser escapar
'
ou"
em sua string, você pode usar o seguinte código:fonte