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

如何编写Java正则表达式通过String.replaceAll()替换行尾空格为单个点

解决方案

你可以直接使用正则表达式 *$实现需求,单次replaceAll调用即可完全满足所有测试用例:

String regex = " *$";
// 所有测试用例全部通过
assertEquals("foo.", "foo".replaceAll(regex, "."));
assertEquals("foo.", "foo ".replaceAll(regex, "."));
assertEquals("foo.", "foo  ".replaceAll(regex, "."));
assertEquals(" foo.", " foo  ".replaceAll(regex, "."));

原理解释

  • 匹配普通的英文空格,* 限定符表示匹配0个或多个前面的空格字符
  • $ 是字符串末尾锚点,限定匹配范围必须是字符串的最后位置
  • 这个正则在整个字符串中只会有唯一一处匹配(末尾的空格序列,哪怕长度为0),因此replaceAll和replaceFirst的执行效果完全一致,不会出现多余替换的问题。

如果需要同时匹配行尾的制表符、换行等所有空白字符,可以把正则替换为\\s*$即可。

内容的提问来源于stack exchange,提问作者ᴇʟᴇvᴀтᴇ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:15:08