Java,如何替换String中的一些字符

时间:2012-03-14 08:00:48

标签: android string url replace

我有一个数组,可以为我保留String格式的URL地址。 在加载URL之前,我需要确保字符串中没有空格。 我写了这段代码,但ReplaceAll()不会改变任何东西。

请告诉我这里有什么问题?

public NewsFeedItemList getNewsList() {
        String str;

        for(int i=0; i<newsFeedItemList.getImage().size(); i++){
            str = newsFeedItemList.getImage().get(i);
            Log.i("before>>>", str);
            str.replaceAll(" ", "%20");
            Log.i("after<<<<", str);
            newsFeedItemList.getImage().set(i, str);
        }

        return newsFeedItemList;
    }

5 个答案:

答案 0 :(得分:7)

字符串是不可变的,这意味着您无法更改String对象的内容。您需要做的是像

String cleanedString = str.replaceAll(" ", "%20");

replaceAll() - Method返回新的String。

答案 1 :(得分:2)

字符串是不可变的,因此您需要将其分配回来:str = str.replaceAll(" ", "%20");

答案 2 :(得分:2)

正如其他海报所说:字符串是不可变的,因此你必须将replaceAll的返回值赋给String。

只是提示:你应该看看java.net.URLEncoderhttp://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html

这个类可以帮助您以正确的方式格式化网址,并且可以处理各种特殊字符 - 不仅仅是空格。

答案 3 :(得分:1)

使用以下代码

更新了您的代码

public NewsFeedItemList getNewsList(){         String str;

    for(int i=0; i<newsFeedItemList.getImage().size(); i++){
        str = newsFeedItemList.getImage().get(i);
        Log.i("before>>>", str);
        str = str.replaceAll(" ", "%20");  // I have update here
        Log.i("after<<<<", str);
        newsFeedItemList.getImage().set(i, str);
    }

    return newsFeedItemList;
}

答案 4 :(得分:1)

建议不要使用replace方法,

使用str = URLEncoder.encode(str)

有时候不仅是空间而且还需要改变角色。