繁体   English   中英

在java属性文件中删除任何可能的行分隔符

[英]Remove any possible line separator in the java properties file

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

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 .... spring of color。”,第二个元素包含“ Green is ....更新” 。“, 等等等等。 我尝试使用java属性类,该类可以理解\\ r和\\ n字符并相应地拆分值,但是它不支持\\\\ r,\\\\ n,<br>和</ p> <p>字符。 我将如何执行程序以相同方式处理\\ r,\\ n,\\\\ r和\\\\ n?

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

您需要做的是将其读取为纯文件,然后自己重​​建所需的值。

我建议分3个步骤进行处理:

  1. 将文件读入字符串列表,每行一个。 这会处理\\r\\n分隔符。
  2. 对于每一行,删除所有多余的标记( <br><p></p>等)
  3. 将结果连接成一个字符串,然后使用该值创建一个属性。

您将无法直接通过Properties类来做到这一点。 您可以使用它来读取属性值。 但是,你一定要去请使用的StringTokenizer类或split(String regex)的方法类,或正则表达式API的模式匹配器类(其中String.split(String regex)类引擎盖下使用)。

使用Properties读取属性Value。

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

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

...

然后根据"|"对字符串进行split()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM