C# 如何删除十进制字符串首尾零且无需单独处理负号
解决方案
通用正则实现(所有支持正则的语言都可使用)
直接通过单次正则匹配替换即可实现,不需要单独拆分、拼接负号:
核心正则规则:^-0*(\.\d*?)0*$,替换为-\1
正则逻辑说明:
- 开头
^-0*匹配负号和后面所有整数部分的前置零- 中间
(\.\d*?)捕获小数点和有效小数部分- 末尾
0*$匹配小数部分末尾的多余零
替换时直接保留负号和捕获到的有效小数部分,自动跳过不需要的零。
Python 示例
import re raw_str = "-00.20300" result = re.sub(r"^-0*(\.\d*?)0*$", r"-\1", raw_str) # 输出结果:-.203
JavaScript 示例
const rawStr = "-00.20300" const result = rawStr.replace(/^-0*(\.\d*?)0*$/, "-$1") // 输出结果:-.203
Python 无正则极简实现
如果不想用正则,可以用字符串分区方法,同样不需要单独处理负号:
raw_str = "-00.20300" int_part, dot, dec_part = raw_str.partition(".") result = f"{int_part[0]}.{dec_part.rstrip('0')}" # 输出结果:-.203
内容的提问来源于stack exchange,提问作者Lightsout
相关产品推荐
相关产品推荐

