web-dev-qa-db-fra.com

Comment échapper au signe d'égalité dans les fichiers de propriétés

Comment puis-je échapper au signe égal (=) dans Java?), j'aimerais mettre un élément comme suit dans mon fichier:

table.whereclause=where id=100
75
joshua

De plus, veuillez vous référer à la méthode load (Reader Reader) de la classe Property sur javadoc

Dans la documentation de la méthode load(Reader reader), il est indiqué

La clé contient tous les caractères de la ligne commençant par le premier caractère d’espace non blanc et jusqu’à, mais non compris, le premier caractère non échappé '=', ':' Ou d’espace blanc autre que un terminateur de ligne. Tous ces caractères de fin de clé peuvent être inclus dans la clé en leur évitant un caractère antislash précédent; par exemple,

\:\=

serait la clé à deux caractères ":=". Les caractères de fin de ligne peuvent être inclus à l'aide des séquences d'échappement \r et \n. Tout espace blanc après que la clé est ignorée; si le premier caractère d'espacement non blanc après la clé est '=' ou ':', il est ignoré et tous les caractères d'espacement après sont également ignorés. Tous les caractères restants sur la ligne deviennent une partie de la chaîne d'élément associée; s'il ne reste plus de caractères, 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ées, le traitement d'échappement est exécuté comme décrit ci-dessus.

J'espère que ça t'as aidé.

77
Mohd Farid

Dans votre exemple spécifique, vous n'avez pas besoin d'échapper aux égaux - vous n'avez besoin de l'échapper que si cela fait partie de la clé. Le format du fichier de propriétés traitera tous les caractères après le premier égal égal, dans la valeur.

74
wrschneider

Caractère d'échappement par défaut dans Java est '\'.
Cependant, Java a le format clé = valeur, il devrait prendre en compte tout ce qui suit la première valeur égale à valeur).

21
Padmarag

Le meilleur moyen d'éviter ce type de problèmes consiste à créer des propriétés par programme, puis à les stocker. 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);

Cela produirait vers System.out la version correctement échappée.

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, c’est un moyen simple de générer du contenu de fichiers .properties qui est garanti être correct. Et vous pouvez mettre autant de propriétés que vous le souhaitez.

15
mvmn

Dans mon cas, deux "\\" de premier plan fonctionnent bien pour moi.

Par exemple: si votre mot contient le caractère '#' (par exemple, un # 100, vous pouvez y échapper avec deux ''

   key= aa\\#100
5

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

pour échappement égal '='\u003d

table.whereclause = où id = 100

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

table.whereclause\u003dwhere id = 100

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

table.whereclause\u003dwhere\u0020id\u003d100

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

2

Dans le fichier application.properties de démarrage printanier ou printanier, voici le moyen d'échapper aux caractères spéciaux;

table.whereclause = où id '\ =' 100

0
sent.ror