Подтвердить что ты не робот

Может ли ключ в свойстве Java содержать пустой символ?

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

foo bar = barefoot

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

key: foo
value: bar = barefoot

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

4b9b3361

Ответ 1

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

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

public synchronized void load(InputStream inStream) throws IOException

чтобы он корректно анализировал свойства.

Ответ 2

Вы можете избежать всякой вещи в файле свойств с помощью Юникода Java:

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

Например:

foo bar = barefoot

должен быть:

foo\u0020bar\u0020=\u0020barefoot

Так будет:

key: "foo bar "
value: " barefoot"

Ответ 3

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

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

Ответ 4

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

Затем, когда вы пишете себя,

foo bar = barefoot

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

key: foo
value: bar = barefoot

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

Ответ 5

keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") + 
               keyValuePair.substring(indexOf("="));