Замена точки между двумя определенными тегами во всех местах - PullRequest
1 голос
/ 20 ноября 2011

У меня есть 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

Ответы [ 3 ]

3 голосов
/ 20 ноября 2011
str = str.replaceAll("<price>(\\d+)\\.(\\d+)</price>", "<price>$1$2</price>");
1 голос
/ 20 ноября 2011

Если вы абсолютно уверены, что файл не содержит . в любом другом месте, вы можете просто использовать это

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 голосов
/ 20 ноября 2011

В дополнение к версии Боахо, пожалуйста, найдите 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("\\.", ""));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...