0

我目前正在尝试从具有单个属性的属性文件中读取,该属性可以使所有可能的行分隔符重复任意次数,例如

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.

如上所示,属性值包含\r、\n、\\r、\\n、<br>和</p><p>作为重复任意次数的行分隔符......我只需要根据行分隔符拆分此属性值(转换为字符串数组),以便第一个数组元素包含“Green is .... the color of spring.”,第二个元素将包含“Green is ....renew 。“, 等等等等。我尝试使用 java Properties 类,它可以理解 \r 和 \n 字符并相应地拆分值,但它不支持 \\r、\\n、< br> 和 </ p> < p> 字符。我如何能够强制程序以相同的方式处理 \r、\n、\\r 和 \\n?

4

3 回答 3

0

您无法使用标准Properties函数加载此文件,因为它不是有效文件。第一个未转义的换行符终止该属性,其余的被忽略。

您需要做的是将其作为纯文件读取并自己重建所需的值。

我建议分三步处理这个问题:

  1. 将文件读入字符串列表,每行一个。这需要处理\r\n分隔符。
  2. 对于每一行,删除所有无关的标记(<br>,<p></p>等)
  3. 将结果连接成一个字符串,然后使用该值创建一个属性。
于 2013-10-24T16:05:20.737 回答
0

您将无法Properties直接通过课程进行此操作。您可以使用它来读取属性值。但是您随后将需要使用StringTokenizer类或Stringsplit(String regex)类中的方法,或正则表达式 API 的Pattern & Matcher类(该类在后台使用)。String.split(String regex)

于 2013-10-24T16:07:49.790 回答
0

将属性值读取为 using Properties

然后replaceAll()针对要删除的所有类型的分隔符运行。然后用单个分隔符替换它们。

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

...

然后split()基于"|".

于 2013-10-24T16:08:24.297 回答