用java matcher替换all

我正在尝试使用JAVA匹配器添加股票信息的超链接.

例如,此字符串将被更改

您如何看待三星和LG?我觉得三星很好.

您如何看待< a href =“”kospi-code =“005930”> Samsung< / a>和< a href =“”kospi-code =“003550”> LG< / a>?我认为< a href =“”kospi-code =“005930”>三星< / a>很好.

但是,结果不是我预期的. 🙁
它只是添加了005930.

这是输出.

您如何看待< a href =“”kospi-code =“005930”> Samsung< / a>和< a href =“”kospi-code =“005930”> LG< / a>?我认为< a href =“”kospi-code =“005930”>三星< / a>很好.

这是我的代码片段.
我错了什么?

String multipleStocks = "How do you think about Samsung and LG? I think Samsung is good.";
Pattern p = Pattern.compile("Hansum|LG|Samsung");
Matcher m = p.matcher(multipleStocks);

HashMap<String, String> stocks = new HashMap<String, String>();

stocks.put("Hansum", "020000");
stocks.put("Samsung", "005930");
stocks.put("LG", "003550");
String ts = null;

while(m.find()){
    System.out.println(m.group());
    ts = m.replaceAll("<a "+stocks.get(m.group(0))+">$0</a>"); 
}
System.out.println(ts);

最佳答案 试试这个代替你的循环.

for (String key : stocks.keySet()) {
    multipleStocks=multipleStocks.replaceAll(key, "<a "+stocks.get(key)+">$0</a>");
}

System.out.println(multipleStocks);
点赞