Может ли ключ в свойстве Java содержать пустой символ? - PullRequest
35 голосов
/ 21 января 2010

Мы получаем свойства (на которые мы не можем влиять) из базы данных и хотим получить к ним доступ посредством сопоставления ключ / значение. Мы столкнулись с проблемой того, что один из ключей свойства содержит пустой символ.

foo bar = barefoot

Это - правильно - интерпретируется следующим образом

key: foo
value: bar = barefoot

Есть ли способ включить пробел в ключ, чтобы он не интерпретировался как разделитель? Я предполагаю, что это поведение точно так же, как и предполагалось, но я подумал, что могу попробовать здесь.

Ответы [ 5 ]

140 голосов
/ 14 июня 2012

Вы можете избежать всех вещей в файле свойств с помощью Java Unicode:

  • \u003d для =
  • \u0020 для пробелов

Например:

foo bar = barefoot

должно быть:

foo\u0020bar\u0020=\u0020barefoot

Так будет:

key: "foo bar "
value: " barefoot"
15 голосов
/ 21 января 2010

Может быть, вы можете избежать пробелов: foo\ bar = barefoot

Редактировать: К сожалению, я не видел, что вы не можете изменить свойства.

10 голосов
/ 21 января 2010

Как кажется, разделитель должен быть =, а не пробел. Следовательно - keyValuePair.split("=") должен сделать.

Если вы загружаете это из файла java .properties, вы можете расширить java.util.Properties и переопределить этот метод

public synchronized void load(InputStream inStream) throws IOException

чтобы он правильно анализировал свойства.

4 голосов
/ 21 января 2010

Я предполагаю, что под «свойствами» вы подразумеваете файл свойств Java (записанный / прочитанный java.util.Properties).

Тогда, когда ты пишешь сам,

foo bar = barefoot

действительно должно интерпретироваться как

key: foo
value: bar = barefoot

Нет способа настроить это, используя встроенный класс Properties. Вы должны либо манипулировать своим вводом (экранировать пробелы, изменить его на _ и обратно ...), либо написать свой собственный анализатор. Возможно, лучше написать собственный синтаксический анализатор, поскольку очевидно, что для начала ваш ввод не является файлом свойств Java: -).

0 голосов
/ 24 августа 2013
keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") + 
               keyValuePair.substring(indexOf("="));  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...