¿Puede la clave en una propiedad Java incluir un carácter en blanco?
Estamos obteniendo propiedades (que no podemos influir) de una base de datos y queremos acceder a ellas mediante una asignación de clave/valor. Nos enfrentamos al problema de que una de las claves de propiedad incluye un carácter en blanco.
foo bar = barefoot
Esto se interpreta - correctamente-como sigue
key: foo
value: bar = barefoot
¿Hay alguna manera de incluir el espacio en blanco en la clave para que no se interprete como el delimitador? Supongo que este comportamiento es justo como se pretende, pero pensé que podría darle una oportunidad aquí.
5 answers
Como parece el delimitador debe ser =
, no el espacio.
Por lo tanto - keyValuePair.split("=")
debe hacer.
Si está cargando esto desde un archivo java .properties
, entonces puede extender java.util.Properties
y anular este método
public synchronized void load(InputStream inStream) throws IOException
Para que analice las propiedades correctamente.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-21 09:38:38
Puede escapar de todo en el archivo de propiedades con Java Unicode:
-
\u003d
para=
-
\u0020
para espacios en blanco
Por ejemplo:
foo bar = barefoot
Debe ser:
foo\u0020bar\u0020=\u0020barefoot
Así será:
key: "foo bar "
value: " barefoot"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-25 15:12:55
Tal vez puedas escapar de los espacios en blanco: foo\ bar = barefoot
Editar: Oops, no vi que no se puede cambiar las propiedades.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-21 09:34:05
Asumo que por "propiedades", te refieres a un archivo de propiedades Java (como escrito/leído por java.util.Properties
).
Entonces, mientras escribe usted mismo,
foo bar = barefoot
Debe ser interpretado como
key: foo
value: bar = barefoot
No hay forma de configurar esto usando la clase incorporada Properties
. Debe manipular su entrada (escape del espacio en blanco, cámbielo a _ y viceversa...), o escribir su propio analizador. Escribir su propio analizador es probablemente mejor, ya que obviamente su entrada no es realmente un archivo de propiedades de Java para empezar :-).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-25 15:16:12
keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") +
keyValuePair.substring(indexOf("="));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-24 15:53:32