Java 如何检查和替换字符串中的字符序列?

Java 如何检查和替换字符串中的字符序列?,java,Java,以下是程序预期的输出: 如果originalString=“catcaticamcatcatgreatcatcat”; 输出应该是“我很棒”。 代码必须找到字符序列(本例中为CAT),然后将其删除。另外,结果字符串的单词之间必须有空格 String origString = remixString.replace("CAT", ""); 我发现我必须使用String.replace,但找出它是否为cat并生成单词之间带有空格的结果字符串的逻辑是什么。首先,您可能希望使用rep

以下是程序预期的输出: 如果originalString=“catcaticamcatcatgreatcatcat”; 输出应该是“我很棒”。 代码必须找到字符序列(本例中为CAT),然后将其删除。另外,结果字符串的单词之间必须有空格

        String origString = remixString.replace("CAT", "");


我发现我必须使用String.replace,但找出它是否为cat并生成单词之间带有空格的结果字符串的逻辑是什么。

首先,您可能希望使用
replaceAll
方法,以确保替换字符串中出现的所有“cat”。然后,您希望引入空格,因此将“CAT”替换为“”(空格),而不是空字符串

正如下面的评论所指出的,单词之间可能有多个空格,因此我们使用正则表达式将“CAT”的多个实例替换为单个空格。“+”符号表示“一个或多个”

最后,修剪字符串以去除前导和尾随空格


remixString.replaceAll(“(CAT)+”和“).trim()

您可以使用接受正则表达式的
replaceAll

String remixString = "CATCATICATAMCATCATGREATCATCAT";
String origString = remixString.replaceAll("(CAT)+", " ").trim();
注意:
replace
replaceAll
的命名非常混乱。它们都替换匹配字符串的所有实例;不同之处在于
replace
采用文本作为参数,而
replaceAll
采用正则表达式

也许这会有帮助

String result = remixString.replaceAll("(CAT){1,}", " ");

请阅读有关
replaceAll()
trim()
的内容,并尝试使用此选项-Stream.of(remixString).map(C->C.replaceAll(“(CAT)+”,““”).trim()).forEach(C->System.out.println(C));我认为单词之间也可能有多个
CAT
s。因此,这将导致单词之间出现多个空格。您还可以使用stream-api-stream.of(remixString).map(C->C.replaceAll(“(CAT)+”,”).trim()).forEach(C->System.out.println(C));是的,你可以使用流,但你可能不应该。为什么要为单个值创建一个流,并使代码更难理解?