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

Java字符串替换问题:将连续数字子串替换为单个指定字符

需求与问题

需要将字符串中的所有连续数字序列替换为单个*字符:

  • 单个数字场景:输入ramesh_gone_to_avbp_9_vc.pdf,需输出ramesh_gone_to_avbp_*_vc.pdf(当前实现此场景正常)
  • 多位数场景:输入ramesh_gone_to_avbp_91_vc.pdf,期望输出ramesh_gone_to_avbp_*_vc.pdf,但当前实现会输出ramesh_gone_to_avbp_**_vc.pdf

已尝试的代码

String ss = "ramesh_gone_to_avbp_92_vc.pdf";
System.out.println(ss.replaceAll("(?<=[\d\.])-(?=[\d\.])", "*"));

解决方案

你当前使用的正则表达式匹配的是数字/点之间的连字符,完全没有处理数字本身,所以无法满足多位数替换为单个*的需求。

正确的做法是匹配一段连续的数字,然后替换为单个*,对应的代码如下:

String ss = "ramesh_gone_to_avbp_92_vc.pdf";
System.out.println(ss.replaceAll("\\d+", "*"));

正则说明

  • \d+:匹配一个或多个连续的阿拉伯数字(\d表示单个数字,+表示匹配1次及以上)
  • 每一段连续数字都会被替换成一个*,不管这段数字有几位,都只会生成一个星号,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:53:19