正则表达式问题:移除字符串中点前及末尾序列的前导零
用正则表达式实现数字段前导零移除方案
没问题,这个需求完全可以用正则表达式搞定!针对你说的01.10转1.10、10.01转10.1的场景,核心就是去掉小数点分隔的每个数字段开头的前导零(只要这个段不止一位数字),下面给你具体的实现方法:
基础实现(仅移除每个段的首个前导零)
查找正则:
(^|\.)0(\d)
替换字符串:
$1$2
效果演示:
- 输入
01.10→ 匹配开头的01,替换后得到1.10 - 输入
10.01→ 匹配小数点后的01,替换后得到10.1 - 输入
001.001→ 会变成01.01(只去掉每个段的第一个前导零)
进阶实现(移除所有前导零)
如果你的需求是彻底清除每个段的所有前导零(比如001直接转1),可以用下面的正则:
查找正则:
(^|\.)0+(\d)
替换字符串:
$1$2
效果演示:
- 输入
001.001→ 替换后得到1.1 - 输入
0.01→ 替换后得到0.1(保留单个零的情况,因为只有当零后面有其他数字时才会移除)
正则逻辑说明
(^|\.):匹配字符串的开头或者小数点,确保我们只处理每个数字段的起始位置,不会误删数字中间的零0+(或单个0):匹配一个或多个连续的前导零(单个0就只匹配第一个零)(\d):捕获零后面的第一个数字,保证我们只移除前面的零,保留后面的有效数字- 替换时用
$1$2,把开头的定位符(字符串开头或小数点)和捕获到的数字拼接,就自然去掉了中间的前导零
内容的提问来源于stack exchange,提问作者Dan Hall
相关产品推荐
相关产品推荐

