Java,如何替换字符串中的某些字符
问题描述:
我有一个数组,可以为我保留字符串格式的URL地址。 加载URL之前,我需要确保字符串中没有空格。 我写了这段代码,但是ReplaceAll()并没有改变任何东西。Java,如何替换字符串中的某些字符
请告诉我这里有什么问题?
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;
}
答
字符串是不可变的,这意味着你不能改变一个String对象的内容。什么,你需要做的是一样的东西
String cleanedString = str.replaceAll(" ", "%20");
的的replaceAll() - 方法返回新的字符串。
答
字符串是不变的,所以你需要将其分配回这样的:str = str.replaceAll(" ", "%20");
答
你只需要
str=str.replaceAll(" ", "%20");
答
更新你的代码与替换线
str.replaceAll(" ", "%20");
以下代码,
public NewsFeedItemList getNews List(){ 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;
}
答
正如已经被其他海报说:字符串是不可变的,所以你必须的replaceAll
的返回值赋给字符串。
只是作为一个提示:你应该在java.net.URLEncoder
看一看:http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html
这个类可以帮助你以正确的方式格式化URL,可以处理各种特殊字符 - 不仅空间。
答
建议不使用replace
方法,
使用str = URLEncoder.encode(str)
,
有时不仅是空间,还有一个需要改变性格。
其实当我测试我的android应用程序时,它崩溃了。当我检查日志时,它显示我的网址之一是这样的:“http://www.mania.com.my/Portals/1/hazama_news 20(1).jpg”当我把它放入浏览器,浏览器改变了它到“http://www.mania.com.my/Portals/1/hazama_news%20(1).jpg”。我把上面的代码放在我的应用程序的某个地方,但没有任何改变。 – Hesam 2012-03-14 08:06:03
建议不要使用'replace'方法,使用'str = URLEncoder.encode(str)' – idiottiger 2012-03-14 08:09:08