【发布时间】:2009-08-19 06:49:09
【问题描述】:
不确定这是否可以使用正则表达式替换命令,但我有一个现有的正则表达式替换,它将数字的最后两位数字转换为以句号为前缀的相同最后两位数字。这是为了与通过货币值发送为“2500”的系统连接,其中这表示“25.00”美元。
我现有的正则表达式:(\d+)(\d{2})$
替换语法为:$1.$2
现在我有一个问题,如果一个值仅作为“50”发送,这可能表示 0.50,我的正则表达式将失败,因为它在左侧搜索 1+ 数字,而两个数字正好在字符串的结尾。
我怎样才能涵盖所有这些情况并让我的正则表达式替换替换:
2500 = 25.00
500 = 5.00
50 = 0.50
5 = 0.05
再次感谢, 格雷厄姆
更新:对于那些问为什么这不能是一个分割和字符串格式的工作的人是因为我必须避免自定义编程来实现这一点。理想情况下,它必须是在数据库中定义的正则表达式“规则”以及其他正则表达式定义,因为它被用于通用翻译系统。它将转换可能有多种格式类型的传入数据,例如通常将字段从“101”转换为“101A”,但在这种数据类型的特殊情况下,需要添加值。
第二次更新:我一直在思考这个问题,因为我绑定到一个数据库,有人会看到比使用 %wackyMoney% 或在 db 字段中定义的其他一些“令牌”更好的方法吗?然后测试我们是否在代码中点击了这个标记以应用 C# 字符串格式和除法?
【问题讨论】: