java - 试图在“狗”之后添加“和猫”,但“狗”中的“s”每次都被遗漏了
问题描述
我试图在" and cats"
之后替换 add ,"dogs"
但我似乎每次都只能"s"
从左边得到正确的输出。"dogs"
class Main {
public static void main(String[] args)
{
String message = "I love dogs! I have a dog named Coco. My dog's very smart!";
int i = 0;
while(message.indexOf("dogs") >= 0)
{
i = message.indexOf("dogs");
String sub1 = message.substring(0 , i + 3);
String sub2 = message.substring(i + 4);
message = sub1 + " and cats" + sub2;
}
System.out.println(message);
}
}
现在我的输出是"I love dog and cats! I have a dog named Coco. My dog's very smart!"
. 但是"s"
缺少了,我不知道如何解决这个问题。
解决方案
您似乎使我只会使用replace的事情过于复杂:
String message = "I love dogs! I have a dog named Coco. My dog's very smart!";
message = message.replace("dogs", "dogs and cats");
System.out.println(message);
这将返回:
I love dogs and cats! I have a dog named Coco. My dog's very smart!
您的代码的问题是第一个子字符串应该是:
String sub1 = message.substring(0 , i + 4);
包括最后的 s。但是,由于字符串“dogs”仍然存在于message
字符串中,while 将是无限的,您应该更改 while 以仅在前一个 find 之后通过i
从该索引递增和检查来检查:
while(message.indexOf("dogs", i) >= 0)
{
i = message.indexOf("dogs");
String sub1 = message.substring(0 , i + 4);
String sub2 = message.substring(i + 5);
message = sub1 + " and cats" + sub2;
i++;
}
System.out.println(message);
输出:
I love dogs and cats I have a dog named Coco. My dog's very smart!
推荐阅读
- mysql - MySQL 错误 1005:外键约束的格式不正确
- php - 用不同的值更新一个数据库表列
- python - `pip3 install psutil` 错误 - 未找到存储库
- django - 密码重置链接生成
- javascript - Promise 链中的 .then(console.log()) 和 .then(() => console.log()) 在执行上有何不同
- solr - 使用两个过滤子句查询父文档
- sql - 错误 [07002] [Microsoft][ODBC 文本驱动程序] 参数太少。预计 1
- php - dompdf 显示 utf-8 语言所有单词 (?) 问号
- typescript - 打字稿索引签名
- php - 检查 zip 存档中的文件而不解压缩