怎样用StringBuffer将一个短文中的原单词全部替换为新单词?

ZZZ5512536 2010-10-11 08:02:48
短文我设的str, 其中的将要被替换的单词为str1,新单词为str2

谢谢指教!
...全文
1170 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lindscn 2010-12-01
  • 打赏
  • 举报
回复
2搂的方法 只能替换字符串 不能替换单词
lindscn 2010-12-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 blazingfire 的回复:]
Java code

public static StringBuffer replaceAll(StringBuffer sb, String oldStr, String newStr) {
int i = sb.indexOf(oldStr);
int oldLen = oldStr.length();
int newLen ……
[/Quote]

能把“I am Jam,and he is James;Jam is his name,is not my name!”中的单词"Jam"替换成"me"吗?
ZZZ5512536 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hudie1234567 的回复:]
StringBuffer的replace方法,第一个参数是开始位置start,第二个参数是结束位置!所以,用你那样写,就有问题,我改成上面的了,就没问题了!
[/Quote]

呵呵,我也知道第二个是结束位置,但写的时候又犯粗心的病了
发现出现的两个问题都一不小心造成的。 唉,老大难问题了

谢谢了哈
ZZZ5512536 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mythofking 的回复:]
Java code

while((index =Str.indexOf(str1)) != -1) {

Str = Str.replace(index,index+str1.length(),str2);
}


把小写的str改成大写的Str
[/Quote]

把小写的str改成大写的Str 又是个粗心的地方……

总之,谢谢楼上诸位的解答了!
茫茫大海 2010-10-11
  • 打赏
  • 举报
回复
你那样写,会有一个问题,start>end!
茫茫大海 2010-10-11
  • 打赏
  • 举报
回复
StringBuffer的replace方法,第一个参数是开始位置start,第二个参数是结束位置!所以,用你那样写,就有问题,我改成上面的了,就没问题了!
茫茫大海 2010-10-11
  • 打赏
  • 举报
回复

Str = Str.replace(index,index + str1.length(),str2);//问题在这句,这个我改后的,看看,和你的区别
  • 打赏
  • 举报
回复

while((index =Str.indexOf(str1)) != -1) {

Str = Str.replace(index,index+str1.length(),str2);
}
  • 打赏
  • 举报
回复

while((index =Str.indexOf(str1)) != -1) {

Str = Str.replace(index,index+str1.length(),str2);
}

把小写的str改成大写的Str
  • 打赏
  • 举报
回复

while((index =str.indexOf(str1)) != -1) {//这个循环条件有问题,下面是个死循环

Str = Str.replace(index,str1.length(),str2);
}
ZZZ5512536 2010-10-11
  • 打赏
  • 举报
回复
String str,str1,str2;
Scanner in = new Scanner(System.in);
System.out.println("输入一段短文:");
str = in.nextLine();
System.out.println("你输入的短文为:" + str);
StringBuffer Str = new StringBuffer(str);

System.out.println("输入一个原单词:");
str1 = in.nextLine();
System.out.println("输入一个新单词:");
str2 = in.nextLine();


int index = -1;
while((index =str.indexOf(str1)) != -1) {

Str = Str.replace(index,str1.length(),str2);
}
System.out.println("替换后的短文为:" + Str);
}

我知道肯定写得很垃圾,大家温柔点哈…
运行能够通过,但替换后的短文总不能输出。帮忙看看错在哪里?
  • 打赏
  • 举报
回复
你把代码贴出来吧
ZZZ5512536 2010-10-11
  • 打赏
  • 举报
回复
帮忙看看我的错在哪里?
初学,第一次用StringBuffer…
茫茫大海 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 blazingfire 的回复:]

Java code

public static StringBuffer replaceAll(StringBuffer sb, String oldStr, String newStr) {
int i = sb.indexOf(oldStr);
int oldLen = oldStr.length();
int newLen = n……
[/Quote]
如果用StringBuffer,这位兄弟的就好!可以转换为String,用replaceAll。
ZZZ5512536 2010-10-11
  • 打赏
  • 举报
回复

int index = -1;
while((index =str.indexOf(str1)) != -1) {

Str = Str.replace(index,str1.length(),str2); }
System.out.println("替换后的短文为:" + Str);

之前还写了个
StringBuffer Str = new StringBuffer(str); 因为是自己看的书,不知道这样写对了没…
运行能够通过,但替换后的短文总不能输出。
blazingfire 2010-10-11
  • 打赏
  • 举报
回复

public static StringBuffer replaceAll(StringBuffer sb, String oldStr, String newStr) {
int i = sb.indexOf(oldStr);
int oldLen = oldStr.length();
int newLen = newStr.length();
while (i > -1) {
sb.delete(i, i + oldLen);
sb.insert(i, newStr);
i = sb.indexOf(oldStr, i + newLen);
}
return sb;
}

public static void main(String[] args) {
StringBuffer sb = new StringBuffer("maimmaim");
System.out.println(replaceAll(sb, "maim", "mai"));
}
  • 打赏
  • 举报
回复

StringBuffer好像需要指定替换的位置,replace(int start, int end, String str)
你可以把StringBuffer的值赋给一个String,然后用String里面的replace,replace(target, replacement)

62,614

社区成员

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

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