2011-11-20 21 views
1

我有一個XML文件,並在有不同的定義項目價格如下定義的兩個標記之間更換點..在所有地方

<property> 
    <propertyid>AAA</propertyid> 
    <price>8.725</price> 
    <discount>0</discount> 
</property> 
<property> 
    <propertyid>BBB</propertyid> 
    <price>4.135</price> 
    <discount>0</discount> 
</property> 

但我想在所有取出點(。)價格的..

如:新的XML字符串應該是如下..

<property> 
    <propertyid>AAA</propertyid> 
    <price>8725</price> 
    <discount>0</discount> 
</property> 
<property> 
    <propertyid>BBB</propertyid> 
    <price>4135</price> 
    <discount>0</discount> 
</property> 

我怎麼能代替所有的這一次在Java中使用正則表達式。

這可能是一個簡單的問題,但我是新來的正則表達式,我需要一個快速的解決方案。

謝謝大家提前。

BR,

Chamin

+0

爲什麼它必須是正則表達式(與明顯的工具,XML解析器相反)?你嘗試了什麼,你卡在哪裏? –

+0

@TimPietzcker解析器是一個很好的方法,但對於這個簡單的任務來說它會更復雜。您必須解析,替換和重新寫入。 – Bozho

回答

2
str = str.replaceAll("<price>(\\d+)\\.(\\d+)</price>", "<price>$1$2</price>"); 
+0

謝謝Bozho ...這就是我正在尋找的.. 我想確保只有在「價格」標籤內才能刪除點。 – Chamin

+0

如果這對您有效,請務必將答案標記爲已接受 – Bozho

0

除了Boaho的版本,請找到2礦。第一個不使用正則表達式,因爲(在你的例子中)你並不真正需要它們。第二種使用正則表達式,但對於出現在價格標籤之外的點不安全。這再次適用於您的示例。

String str = "<property>\r\n" + 
      " <propertyid>AAA</propertyid>\r\n" + 
      " <price>8.725</price>\r\n" + 
      " <discount>0</discount>\r\n" + 
      "</property>\r\n" + 
      "<property>\r\n" + 
      " <propertyid>BBB</propertyid>\r\n" + 
      " <price>4.135</price>\r\n" + 
      " <discount>0</discount>\r\n" + 
      "</property>"; 


    System.out.println(str.replace(".", "")); 

    System.out.println(str.replaceAll("\\.", "")); 
0

如果你是很肯定的說文件不存在任何其他地方包含.,你可以簡單地使用這個

String content = "..."; 
String replaced = content.replaceAll("[.]",""); // or simply content.replace(".",""); 

如果你確信<price>只出現在<property標籤,你可以使用這個

 String content = "<price>87.25</price>"; 
     String replaced = content.replaceAll(
       "<price>(\\d+)\\.(\\d+)</price>","<price>$1$2</price>"); 
     System.out.println(replaced); 

但是,萬無一失的方法是使用XML解析與Xpath選擇只需要的節點,然後使用以上RE取代

+0

謝謝Prashant您的詳細快速響應......我在「價格」標籤中出現點問題。 所以'content.replaceAll(「(\\ d +)\\。(\\ d +)」,「 $ 1 $ 2」);'是我想要的解決方案。 再次謝謝.. :) – Chamin

+0

乾杯...... :) –

相關問題