You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在介词前添加空格?处理WordsofWisdom字符串的正则问题

解决办法:给'WordsofWisdom'里的'of'前加空格

嘿,这问题很容易搞定!你原来的正则是用来在非下划线后的大写字母前加空格,所以它能把Wisdom的W前面拆开,但管不到小写的of部分。要在of前也加上空格,可以分两种方式实现:

方式一:分步替换(清晰直观)

先单独处理of的情况,再用你原来的正则处理大写字母的拆分,代码如下:

String originalStr = "WordsofWisdom";
// 第一步:在单词字符后的'of'前加空格
String afterOfFix = originalStr.replaceAll("(?<=\\w)(of)", " $1");
// 第二步:用你原来的规则拆分大写字母开头的单词
String finalResult = afterOfFix.replaceAll("([^_])([A-Z])", "$1 $2");
// 输出结果:Words of Wisdom

这里的(?<=\\w)(of)是正向预查,意思是只匹配前面跟着字母/数字/下划线的of,避免误匹配字符串开头的of。

方式二:一步到位的正则

如果想省一步,可以把两个规则合并成一个正则,一次替换完成:

String originalStr = "WordsofWisdom";
String finalResult = originalStr.replaceAll("(?<=\\w)(of)|([^_])([A-Z])", "$1$2 $3");
// 输出结果:Words of Wisdom

这个正则用|分隔了两种匹配场景:

  • 第一种场景:(?<=\\w)(of),负责给of前加空格
  • 第二种场景:([^_])([A-Z]),就是你原来的规则,给大写字母前加空格

替换时$1$2会对应两种场景里的匹配内容,再加上空格和对应的分组,就能一次完成所有拆分啦。

内容的提问来源于stack exchange,提问作者krystal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:05:49