Question

Nous obtenons des propriétés (que nous ne pouvons pas influencer) sur une base de données et que vous souhaitez y accéder par une cartographie clé / valeur. Nous sommes confrontés au problème que l'une des clés de propriété comprend un caractère blanc.

foo bar = barefoot

est - à juste titre - interprété comme suit

key: foo
value: bar = barefoot

Y at-il un moyen d'inclure l'ébauche dans la clé pour que ce n'est pas interprété comme séparateur? Je suppose que ce comportement est comme prévu, mais je pensais que je pouvais essayer ici.

Était-ce utile?

La solution

Comme il semble devrait être = le délimiteur, pas d'espace. Par conséquent -. keyValuePair.split("=") devrait faire

Si vous chargez ce fichier à partir d'un .properties java, vous pouvez étendre java.util.Properties et remplacer cette méthode

public synchronized void load(InputStream inStream) throws IOException

pour que les propriétés parse correctement.

Autres conseils

Vous pouvez échapper à tout dans le fichier de propriétés avec Java Unicode:

  • \u003d pour =
  • \u0020 pour les espaces

Par exemple:

foo bar = barefoot

doit être:

foo\u0020bar\u0020=\u0020barefoot

sera:

key: "foo bar "
value: " barefoot"

Peut-être que vous pouvez échapper aux espaces blancs: foo\ bar = barefoot

Edit:. Oops, je ne vois pas que vous ne pouvez pas modifier les propriétés

Je suppose que par "propriétés", vous voulez dire un fichier de propriétés Java (comme écrit / lu par java.util.Properties).

Alors, comme vous écrivez,

foo bar = barefoot

doit en effet être interprété comme

key: foo
value: bar = barefoot

Il n'y a aucun moyen de configurer cette aide de la classe Properties intégré. Vous devez soit manipuler votre entrée (escape les espaces blancs, changer à _ et le dos ...), ou écrire votre propre analyseur. La rédaction de votre propre analyseur est probablement mieux, car évidemment votre entrée est pas vraiment un fichier de propriétés Java pour commencer: -.)

keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") + 
               keyValuePair.substring(indexOf("="));  
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top