141 votes

En Java, il est un moyen d'écrire une chaîne de caractères littérale, sans avoir à échapper les guillemets?

Disons que vous avez un littéral de Chaîne avec beaucoup de guillemets à l'intérieur. Vous pouvez échapper à tous, mais c'est une douleur, et difficile à lire.

Dans certaines langues, il vous suffit de faire ceci:

foo = '"Hello, World"';

En Java, cependant, '' est utilisé pour l' chars, de sorte que vous ne pouvez pas l'utiliser pour Strings de cette façon. Certaines langues ont une syntaxe pour contourner ce problème. Par exemple, en python, vous pouvez faire ceci:

"""A pretty "convenient" string"""

Java ont quelque chose de semblable?

166voto

benjismith Points 8739

Non, et j'ai toujours été agacé par le manque de différents chaîne littérale la syntaxe Java.

Voici une astuce que j'ai utilisé de temps à autre:

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

J'ai surtout seulement faire quelque chose comme ça pour un champ statique. Car il est statique de la chaîne-remplacer le code qui est appelé une fois, lors de l'initialisation de la classe. Si les performances d'exécution de la pénalité est pratiquement inexistant, et il rend le code beaucoup plus lisible.

79voto

Jack Points 61503

La réponse est non, et la preuve réside dans le Langage Java Specification:

  StringLiteral:
   "StringCharacters"

  StringCharacters:
   StringCharacter
   | StringCharacters StringCharacter

  StringCharacter:
   InputCharacter but not " or \
   | EscapeSequence

Comme vous pouvez le voir un StringLiteral peut-être simplement lié par " et ne peut pas contenir de caractère spécial, sans s'échappe..

Une note de côté: vous pouvez intégrer Groovy à l'intérieur de votre projet, ce sera d'étendre la syntaxe de Java vous permettant d'utiliser '''multi line string ''', ' "string with single quotes" ' et également "string with ${variable}".

5voto

Chris Lercher Points 22134

Réponse Simple: Non.

Pour plus de chaînes de caractères qui doit être échappé, j'ai l'habitude de lire à partir d'une ressource externe.

3voto

Doua Beri Points 984

vous pouvez également utiliser StringEscapeUtils de apache commons

Mise à JOUR: Si quelqu'un est intéressé par quelques exemples voici un lien utile : http://java.dzone.com/articles/commons-lang-3-improved-and-powerful-StringEscapeUtils

-5voto

La suite semble fonctionner pour moi:

String x = "Some Text" + '"' + "More Text" + '"' + "Even More Text";

Je pense que parce que char est la primitive de la variable de type Chaîne de caractères, Chaînes de caractères et les caractères peuvent être combinées (au moins l'éclipse compilateur ne semble pas se plaindre).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X