Java 字符串替换

coolszy 2009-10-06 08:44:06

String badWords = "fuck/kao";
String content = "我喜欢fuck";
String result = "";
String words[] = badWords.split("/");
for (int i = 0; i < words.length; i++)
{
result=content.replaceAll(words[i], "***");
}
//result=content.replaceAll("fuck", "***");
System.out.println(result);


为什么循环里面使用数组不能成功,而注释的那行能成功
...全文
130 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolszy 2009-10-07
  • 打赏
  • 举报
回复
明白了,当时糊涂
dislyan 2009-10-06
  • 打赏
  • 举报
回复
参考2楼

可以到ide里面一步步调下
breezes2008 2009-10-06
  • 打赏
  • 举报
回复
过程中产生很多的String,不妨用Stringbuffer代替。
sforiz 2009-10-06
  • 打赏
  • 举报
回复
UP
阿_布 2009-10-06
  • 打赏
  • 举报
回复
第二次覆盖了第一次的值,第二次取到的是kao,二kao在content中没有。
loveofmylife 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 coolszy 的回复:]

for (int i = 0; i < words.length; i++)
{
result=content.replaceAll(words[i], "***");
}
[/Quote]
这个循环就两次
第一次为
result=content.replaceAll("fuck", "***");
配皮和替换成功,此时result="我喜欢***"

第二次为
result=content.replaceAll("kao", "***");
这句话相当于
result=Pattern.compile(regex).matcher(content).replaceAll(repl)
由于Pattern.compile(regex).matcher(content)匹配不成功,所以最后result=content=我喜欢fuck
hyhymn 2009-10-06
  • 打赏
  • 举报
回复
先Mark下.
gutan_fox 2009-10-06
  • 打赏
  • 举报
回复
恩,支持2,3L
littlemonster 2009-10-06
  • 打赏
  • 举报
回复
public class Test {

public static void main(String[] args) {
StringBuffer a = new StringBuffer("a");
StringBuffer b = new StringBuffer("b");

System.out.println(operate(a, b));
System.out.println("" + 'a' + 1);
System.out.println('a' + 1);


String badWords = "shift/kao";
String content = "likeshift";
String result = "";
String words[] = badWords.split("/");
System.out.println("words[0]="+ words[0]);
System.out.println("words[1]="+ words[1]);
for (int i = 0; i < words.length; i++)
{
result=content.replaceAll(words[i], "***");
}
//result=content.replaceAll("shift", "***");
System.out.println(result);



}

static StringBuffer operate(StringBuffer x, StringBuffer y) {
x.append(y);
y = x;
return y;
}

}


“/”是可以分割的。之后得
words[0]=shift
words[1]=kao

在于
for (int i = 0; i < words.length; i++)
{
result=content.replaceAll(words[i], "***");//这句
}
result=content.replaceAll(words[i], "***");//这句用conten replaceALl了2次。
i = 0 时,第一次相当于
result=content.replaceAll("shift", "***");--》result = like***
i = 1 时,第二次相当于
result=content.replaceAll("kao", "***");--》result = likeshift

所以最后的result还是原来的content内容。没变噢



[Quote=引用楼主 coolszy 的回复:]
Java code
String badWords="fuck/kao";
String content="我喜欢fuck";
String result="";
String words[]= badWords.split("/");for (int i=0; i< words.length; i++)
{
result=content.replaceAll(words[i],"***");
}//result=content.replaceAll("fuck", "***");System.out.println(result);

为什么循环里面使用数组不能成功,而注释的那行能成功
[/Quote]
小猪头是猪 2009-10-06
  • 打赏
  • 举报
回复
在JAVA中的数组和C++的数组不一样的啊
再说了 你的STRING 对象
要是你的换成数据应该就可以了啊
amdgaming 2009-10-06
  • 打赏
  • 举报
回复
看错了,不好意思。
caofaping 2009-10-06
  • 打赏
  • 举报
回复
数组也能成功,只是result最后赋值的和content的值是一样的,你把sysout放在for里面试试!
swandragon 2009-10-06
  • 打赏
  • 举报
回复

tring badWords = "fuck/kao";
String content = "我喜欢fuck";
String result = "";
String words[] = badWords.split("/");
for (int i = 0; i < words.length; i++)
{
content=content.replaceAll(words[i], "***");
}
System.out.println(content);
amdgaming 2009-10-06
  • 打赏
  • 举报
回复
当然不会 了,你 String content = "我喜欢fuck";
用 / 分割 能分的出来 东西 吗。不能,所以 不行。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧