85 votes

Comment échapper au signe égal dans les fichiers de propriétés ?

Comment puis-je échapper au signe égal ( = ) dans les fichiers de propriétés Java ? Je voudrais mettre quelque chose comme ce qui suit dans mon fichier :

table.whereclause=where id=100

98voto

wrschneider99 Points 5119

Dans votre exemple spécifique, vous n'avez pas besoin d'échapper les égaux - vous devez seulement les échapper s'ils font partie de la clé. Le format de fichier des propriétés traitera tous les caractères après le premier égal non échappé comme faisant partie de la valeur.

12 votes

Je ne sais pas pourquoi cela n'a pas été marqué ! La réponse correcte la plus simple ! Et la plupart du temps, les gens cherchent la valeur d'échappement dans le fichier de propriétés !

1 votes

Petite correction : traitera comme une valeur tous les caractères après les premiers égaux et espaces de queue non mis en évidence, c'est-à-dire les espaces de tête. dans la valeur sont retirés. Exemple "myKey=my value" est identique à "myKey = my value".

85voto

Mohd Farid Points 667

En outre, veuillez vous référer à load(Reader reader) méthode de Property classe sur javadoc

Sur load(Reader reader) La documentation de la méthode indique

La clé contient tous les caractères de la ligne en commençant par le premier caractère non blanc et jusqu'à, mais sans inclure le premier caractère non encodé '=' , ':' ou un caractère d'espace blanc autre qu'un caractère de fin de ligne. Tous ces ces caractères de fin de clé peuvent être inclus dans la clé en les échappant en les faisant précéder d'une barre oblique inversée précédent, par exemple,

\:\=

serait la clé à deux caractères ":=". Les caractères de fin de ligne peuvent être inclus en utilisant \r y \n s'échapper d'échappement. Tout espace blanc après la touche est ignoré ; si le premier caractère non blanc après la touche non blanc après la touche est '=' o ':' alors elle est ignorée et toute caractères d'espace blanc qui le suivent sont également ignorés. Tous les caractères restants sur la ligne font partie de la chaîne de l'élément chaîne d'éléments associée ; s'il n'y a il n'y a pas de caractères restants, l'élément est la chaîne vide "" . Une fois que les séquences de caractères brutes constituant la clé et l'élément sont identifiés, le traitement de l'échappement est est effectué comme décrit ci-dessus.

J'espère que cela vous aidera.

26voto

Padmarag Points 3489

Le caractère d'échappement par défaut en Java est '\'.
Cependant, le fichier de propriétés Java a le format key=value, il devrait considérer tout ce qui suit le premier égal comme valeur.

9 votes

À l'exception des espaces en tête (oh et le '=' entre la clé et la valeur n'est pas obligatoire, il peut être : ou un espace vide)

17voto

mvmn Points 733

La meilleure façon d'éviter ce genre de problèmes est de construire les propriétés par programme et de les stocker ensuite. Par exemple, en utilisant un code comme celui-ci :

java.util.Properties props = new java.util.Properties();
props.setProperty("table.whereclause", "where id=100");
props.store(System.out, null);

La version correctement échappée sera affichée dans System.out.

Dans mon cas, le résultat était :

#Mon Aug 12 13:50:56 EEST 2013
table.whereclause=where id\=100

Comme vous pouvez le constater, il s'agit d'un moyen simple de générer un contenu de fichiers .properties dont l'exactitude est garantie. Et vous pouvez mettre autant de propriétés que vous le souhaitez.

2voto

Vous pouvez regarder ici La clé d'une propriété Java peut-elle inclure un caractère blanc ?

pour un échappement égal à "= \u003d

table.whereclause=where id=100

clé : [table.whereclause] valeur : [where id=100]

table.whereclause \u003dwhere id=100

clé : [table.whereclause=where] valeur : [id=100]

table.whereclause \u003dwhere\u0020id\u003d100

clé : [table.whereclause=where id=100] valeur :[]

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