替换字符串中的char序列不起作用

时间:2013-07-20 19:50:59

标签: java

我正在将URL中的数据转换为String a,并将此字符串作为参数传递给gson的fromJson方法。现在我需要替换字符串a中的一些子字符串。

    String url = "abc";
    String a = getDataFromURL(url); //this string contains all the data from the URL, and getDataFromURL is the method that reads the data from the URL.
    String tmp = "\"reservation\":\"www.\"";
    String tmpWithHttp = "\"reservation\":\"http://www.\"";

    if(a.contains(tmp))
    {
    a = a.replace(a, tmpWithHttp);
    }

网址中的所有数据均为JSON。我在这里的要求是,如果字符串a包含子字符串 - "reservation":"www.,请将其替换为"reservation":"http://www.

上面的代码我没有用。有人可以帮我吗?

2 个答案:

答案 0 :(得分:3)

你可能意味着:

a = a.replace(tmp, tmpWithHttp);

而不是:

a = a.replace(a, tmpWithHttp);

在更换之前,您无需进行contains()检查。仅当要替换的子字符串存在时,String#replace方法才会替换。因此,您可以移除周围的if

答案 1 :(得分:2)

在您的问题中,您指定要替换"reservation":"www.。但是,在您的代码中,您添加了一个额外的转义引号,导致替换搜索"reservation":"www.",这不在字符串中。

只需删除最后一个转义引用:

String tmp = "\"reservation\":\"www.";