小编典典

replaceAll不替换字符串

java

我希望将文本“REPLACEME”替换为我的StringBuffer符号。当我打印符号时,它是一个有效的字符串。当我打印查询时,它仍然具有文本REPLACEME而不是符号。为什么?

private String buildQuery(){
    String query = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(REPLACEME)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=";

    deserializeQuotes();

    StringBuffer symbols = new StringBuffer();
    for(int i = 0; i < quotes.size();i++){
        if(i == (quotes.size()-1))
            symbols.append("%22" + quotes.get(i).getSymbol() + "%22%"); //end with a quote
        else
            symbols.append("%22" + quotes.get(i).getSymbol() + "%22%2C");
    }

    System.out.println("***SYMBOLS***" + symbols.toString());
    query.replaceAll("REPLACEME", symbols.toString());

    return query;
}

阅读 516

收藏
2020-09-28

共1个答案

小编典典

更改

query.replaceAll("REPLACEME", symbols.toString());

至:

query = query.replaceAll("REPLACEME", symbols.toString());

Java中的字符串被设计为不可变的
这就是为什么replaceAll()不能替换当前字符串 的字符,因此它必须返回替换了字符的 字符串。


此外,如果你想简单地替换文字,不需要正则表达式的语法支持使用replace替代replaceAll(正则表达式语法的支持是这两种方法之间唯一的区别)。它是安全的情况下,你会想取代它可以包含正则表达式元字符像文字*+[]
和其他人

2020-09-28