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

Java如何通过单条regex语句移除指定字符后再删除字符串末尾字符

问题原因

你之前的写法不生效是因为正则匹配是直接作用于原始输入字符串,无法先完成指定字符删除的中间操作后再匹配末尾字符。你写的[<>,t,d,//].$只会匹配原始字符串末尾相邻的「1个指定字符+1个任意字符」,自然没法实现预期效果。另外你原来的正则字符集存在冗余:字符集内不需要用逗号分隔字符,斜杠也不需要重复写两次,简化后为[<>td/]即可。

正确实现

要求单条语句的话,直接链式调用两次replaceAll即可,第二次替换作用于第一次删除指定字符后的结果,完全符合需求,易读性也更高:

String codCIM = element.toString().replaceAll("[<>td/]", "").replaceAll(".$", "");

如果希望只用一次正则操作实现,也可以写为:

String codCIM = element.toString().replaceAll("[<>td/]|(?:[^<>td/])$", "");

效果验证

针对你的示例输入"dtt>W43451005/dttt>",两种写法最终输出均为预期的"W4345100"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:18:03