2013-10-24 3 views
0

В настоящее время я пытаюсь прочитать из файла свойств, имеющего в нем одно свойство, которое может содержать все возможные разделители строк, повторяющиеся любое количество раз, например.Удалите все возможные разделители строк в файле свойств java

green.color.poem=Green is .... the color of spring.\r\nGreen is .... renewal.\n\nGreen is .... the color of envy.\r\n\r\nGreen is .... a new crayon.\\r\\nGreen tastes like .... a crisp apple.\\r\\n\\r\\nGreen smells like .... fresh cut grass.<br>Green sounds like .... a croaking frog.</p><p>Green feels like .... soft, velvety moss.\n\nGreen looks like .... shiny emeralds.\r\n\\r\\nGreen makes me .... go.\n\nGreen is .... my favorite color. 

Как видно выше, значение свойства содержит \ г, \ п, \\ г \\ п, < ш> и </р> < р> как разделители строк повторяющихся любое число раз ... Мне просто нужно разбить это значение свойства (в массив строк) на основе разделителей строк, чтобы первый элемент массива удерживал «зеленый цвет ... цвет весны». Второй элемент будет содержать " Зеленый - это ... обновление », так далее и т. Д. Я попытался использовать класс свойств Java, который может понимать символы \ r и \ n и разделить значение соответственно, но он не чтит символы \\ r, \\ n, < и> </p> < p>. Как я могу обеспечить выполнение программы для обработки \ r, \ n, \\ r и \\ n одинаковым образом?

+0

Кроме того, этот файл может содержать текст без текста в формате \ uXXXX. – user1738250

ответ

0

Невозможно загрузить этот файл с помощью стандартных функций Properties, так как это недопустимый файл. Первая неэкранированная новая строка завершает свойство, а остальная часть игнорируется.

Что вам нужно сделать, это прочитать его как обычный файл и самостоятельно восстановить желаемое значение.

Я бы рекомендовал ее обработки в 3 этапа:

  1. Чтение файла в список строк, по одному в каждой строке. Это касается разделителей \r\n.
  2. Для каждой строки, удалить все посторонние разметки (<br>, <p></p> и т.д.)
  3. конкатенации результаты в одну строку, а затем создать свойство с этим значением.
0

Вы не сможете использовать это непосредственно с помощью класса Properties. Вы можете использовать это для чтения в значении свойства. Но тогда вам понадобится использовать класс StringTokenizer или метод split(String regex) в классе String или классы (который использует класс String.split(String regex) под капотом).

+0

Похож на @JimGarrison и я перекрестился. Его ответ дает немного более подробную информацию в последовательности шагов, которые вам понадобятся. Классы, о которых я упоминаю, могут быть использованы вместе с ними, если это необходимо. – Javaru

0

Прочитать информацию об этом продукте Properties.

Затем запустите replaceAll() для всех типов разделителей, которые вы хотите удалить. Затем замените их одним разделителем.

replaceAll("\r\n", "|"); 
replaceAll("\n\n", "|"); 
replaceAll("\r\n\r\n", "|"); 

...

Затем split() строка на основе "|".

Смежные вопросы