gpt4 book ai didi

java - 仅替换字符串的部分空格

转载 作者:行者123 更新时间:2023-12-01 09:46:05 27 4
gpt4 key购买 nike

我有一个像

这样的字符串
"This is apple tree"

我想删除苹果一词之前的可用空格。更改后,它会像

"Thisisapple tree"

我需要通过单个替换命令与正则表达式相结合来实现此目的。

最佳答案

目前看来您可能正在寻找

String s = "This is apple tree";
System.out.println(s.replaceAll("\\G(\\S+)(?<!(?<!\\S)apple)\\s", "$1"));

输出:Thisisapple tree .

说明:

  • \G如果还没有上一个匹配项(当我们尝试查找第一个匹配项时),则表示上一个匹配项的结束或输入的开始 ( ^ )
  • \S+表示一个或多个非空白字符(用于匹配单词,包括非字母字符,如 ' 或标点符号)
  • (?<!(?<!\\S)apple)\\s Negative-look-behind 将阻止接受具有 apple 的空格在它之前(我在 apple 之前添加了另一个否定查找,以确保它没有任何非空白,从而确保这不是其他单词的一部分)
  • $1 in replacement 表示来自第 1 组的匹配(来自 (\S+) 的匹配),该组代表单词。因此,我们仅用单词替换单词和空格(有效删除空格)
<小时/>

警告:此解决方案假设

  • 句子不以空格开头,
  • 单词之间只能用一个空格分隔。

如果我们想摆脱这种假设,我们需要这样的东西:

System.out.println(s.replaceAll("^\\s+|\\G(\\S+)(?<!(?<!\\S)apple)\\s+", "$1"));
  • ^\s+将允许我们匹配字符串开头的空格(并将它们替换为组 1(单词)的内容,在本例中为空,因此我们只需删除这些空格即可)
  • \s+最后允许我们匹配单词及其后面的一个或多个空格(以删除它们)

关于java - 仅替换字符串的部分空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38019719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com