2013-10-24 15 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. 

如可以如上所見,屬性值包含\ r \ N,\\ R,\\ N,< BR>和</P> < P>作爲行分隔重複任意次數...我只需要根據行分隔符將這個屬性值(分成一個字符串數組),這樣第一個數組元素就會保持「綠色是......春天的顏色」,第二個元素會保持「綠色是......更新。「等等等等。我嘗試使用java Properties類,它可以理解\ 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這個類。您可以使用它來讀取屬性值。但是,您將需要使用類類或split(String regex)類中的String類或正則表達式API的Pattern & Matcher類(其中String.split(String regex)類在引擎下使用)。

+0

看起來像@JimGarrison和我交叉發佈。他的回答給出了你需要的步驟序列中更好的細節。如果需要,我提到的這些類可以與它們結合使用。 – Javaru

0

閱讀房屋使用價值Properties

然後針對要刪除的所有類型的分隔符運行replaceAll()。然後用一個分隔符替換那些。

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

...

然後split()基礎上,"|"的字符串。