Может ли ключ в свойстве Java содержать пустой символ?
Мы получаем свойства (которые не можем влиять) из базы данных и хотим получить к ним доступ путем сопоставления ключей/значений.
Мы сталкиваемся с проблемой, что один из ключей свойств включает пустой символ.
foo bar = barefoot
Это - правильно - интерпретируется следующим образом
key: foo
value: bar = barefoot
Есть ли способ включить пробел в ключ, чтобы он не интерпретировался как разделитель? Я предполагаю, что это поведение так же, как и предполагалось, но я подумал, что могу попробовать здесь.
Ответы
Ответ 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("="));