簡體   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