我有一个数组,可以为我保留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;
}
答案 0 :(得分:7)
字符串是不可变的,这意味着您无法更改String对象的内容。您需要做的是像
String cleanedString = str.replaceAll(" ", "%20");
replaceAll() - Method返回新的String。
答案 1 :(得分:2)
字符串是不可变的,因此您需要将其分配回来:str = str.replaceAll(" ", "%20");
答案 2 :(得分:2)
正如其他海报所说:字符串是不可变的,因此你必须将replaceAll
的返回值赋给String。
只是提示:你应该看看java.net.URLEncoder
:http://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)
,
有时候不仅是空间而且还需要改变角色。