java中如何替换字符串类型相同名称的多个标记之间的值 String xml=“USINDIA”;

java中如何替换字符串类型相同名称的多个标记之间的值 String xml=“USINDIA”;,java,Java,在这种情况下,如何替换两个国家/地区标记之间的值,因为两个标记的名称相同 我做的代码更改 作为 int startPos=xml.indexOf(“”+“”.length(); int endPos=xml.indexOf(“,startPos); 字符串stry1=“UK”; xml=xml.substring(0,startPos)+stry1+xml.substring(endPos,xml.length()); System.out.println(“xml第一次是:“+xml”); 我

在这种情况下,如何替换两个国家/地区标记之间的值,因为两个标记的名称相同

我做的代码更改 作为

int startPos=xml.indexOf(“”+“”.length();
int endPos=xml.indexOf(“,startPos);
字符串stry1=“UK”;
xml=xml.substring(0,startPos)+stry1+xml.substring(endPos,xml.length());
System.out.println(“xml第一次是:“+xml”);

我不知道我是否正确理解了这个问题,但如果你想用英国取代所有国家,它的工作原理如下:

            int startPos =  xml.indexOf("<country>") + "<country>".length();
            int endPos =  xml.indexOf("</country>", startPos);
            String stry1= "UK";

            xml = xml.substring(0, startPos)+stry1+xml.substring(endPos, xml.length());
            System.out.println("xml 1st time is:"+ xml);
String xml=“USINDIA”;
字符串replaceBy=“UK”;
System.out.println(xml.replaceAll(“.*”、“+replaceBy+”);
我使用了一个非贪婪的正则表达式来匹配所有的国家标签,并将它们替换为国家标签,中间是英国

更新:

如果您有地图,并且希望用其他国家/地区替换特定国家/地区:

    String xml = "<country>US</country><country>INDIA</country>";
    String replaceBy = "UK";
    System.out.println(xml.replaceAll("<country>.*?</country>", "<country>" + replaceBy + "</country>"));
Map countryMap=newhashmap();
countryMap.put(“美国”、“英国”);
countryMap.put(“印度”、“RSA”);
字符串xml=“USINDIA”;
for(条目:countryMap.entrySet()){
xml=xml.replace(“+entry.getKey()+”,“+entry.getValue()+”);
}
System.out.println(xml);
如果您有一个国家/地区列表,并且希望用列表中的国家/地区替换xml中的国家/地区:

    Map<String, String> countryMap = new HashMap<>();
    countryMap.put("US", "UK");
    countryMap.put("INDIA", "RSA");

    String xml = "<country>US</country><country>INDIA</country>";

    for (Entry<String, String> entry : countryMap.entrySet()) {
        xml = xml.replace("<country>" + entry.getKey() + "</country>", "<country>" + entry.getValue() + "</country>");
    }

    System.out.println(xml);
List countries=Arrays.asList(“英国”、“RSA”);
字符串xml=“USINDIA”;
xml=xml.replaceAll(“”),countries.stream()
.map(c->“”+c+“”)
.collect(collector.joining());
System.out.println(xml);

I能够通过执行以下操作替换第一个标记的值:xml.substring(0,startPos)+stry1+xmlDoc1.substring(endPos,xml.length());where Stry1=“UK”您是如何分享的?还有,你的预期结果是什么?请把你的代码放在问题中。我已经更新了代码更改,它只更新了从美国到英国的第一个国家标签值,但第二个国家标签值无法更新update@SambeetDas:你想用什么替换它?包括预期输出的示例输入。嗨,如果要用不同的值替换标签,我该如何做英国和RSA您知道哪个国家被哪个其他国家替换吗?
    Map<String, String> countryMap = new HashMap<>();
    countryMap.put("US", "UK");
    countryMap.put("INDIA", "RSA");

    String xml = "<country>US</country><country>INDIA</country>";

    for (Entry<String, String> entry : countryMap.entrySet()) {
        xml = xml.replace("<country>" + entry.getKey() + "</country>", "<country>" + entry.getValue() + "</country>");
    }

    System.out.println(xml);
    List<String> countries = Arrays.asList("UK", "RSA");

    String xml = "<country>US</country><country>INDIA</country>";

    xml = xml.replaceAll("<country>.*</country>", countries .stream()
                                                            .map(c -> "<country>" + c + "</country>")
                                                            .collect(Collectors.joining()));

    System.out.println(xml);