Может ли ключ в собственности Java включить пустой символ?

StackOverflow https://stackoverflow.com/questions/2108103

  •  22-09-2019
  •  | 
  •  

Вопрос

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

foo bar = barefoot

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

key: foo
value: bar = barefoot

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

Это было полезно?

Решение

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

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

public synchronized void load(InputStream inStream) throws IOException

так что он разбирается правильно.

Другие советы

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

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

Например:

foo bar = barefoot

должно быть:

foo\u0020bar\u0020=\u0020barefoot

Так будет:

key: "foo bar "
value: " barefoot"

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

РЕДАКТИРОВАТЬ: Ой, я не видел, что вы не можете изменить свойства.

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

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

foo bar = barefoot

действительно должен быть истолкован как

key: foo
value: bar = barefoot

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

keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") + 
               keyValuePair.substring(indexOf("="));  
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top