[正则练习]将字符串中多处“数字串”添加千位逗号
本帖最后由 afan 于 2010-11-10 12:53 编辑本帖为 给数字串加上逗号 增加难度的练习,如果没有把握最好先解决上个练习。
以下字符串中含有多处数字串,需要将其中的每个数字串(的整数部分)右起每隔3位添加一个半角逗号(千位分隔)。1234 -12345.1234 1234&-0.0123 -1234 "$123456789"
¥12345678.0123 abc 123
+1234aaa需要得到的结果如下:
1,234 -12,345.1234 1,234&-0.0123 -1,234 "$123,456,789"
¥12,345,678.0123 abc 123
+1,234aaa
如图:
回帖时请隐藏答案,以免影响他人思路~
建议使用测试工具,如: Au3.REHelper_正则学习与测试助手
当然,如果你是在脚本中直接测试,可以使用以下变量$str$Str = _
'1234 -12345.1234 1234&-0.0123 -1234 "$123456789"' & @CRLF & _
' ¥12345678.0123 abc 123' & @CRLF & _
'+1234aaa'
MsgBox(0, '原字符串', $Str) 本帖最后由 binghc 于 2010-11-10 13:24 编辑
**** Hidden Message ***** 回复 2# binghc
不错~ 不过有点小问题,试试就用“1234”测试下 本帖最后由 binghc 于 2010-11-10 13:29 编辑
回复 3# afan
这个容易,稍微改一下就没问题了{:face (125):} 来学习下 想不出来 本帖最后由 Duvet 于 2010-11-11 16:43 编辑
想不出好的方法{:face (368):}
**** Hidden Message ***** 本帖最后由 Duvet 于 2010-11-11 16:57 编辑
**** Hidden Message ***** 很想学习其中的正则实现方法,能不能恢复帖子可回复
试试可以回复? 第二行第一个逗号加在123的后面了,应该加在12的后面,不明白为什么,还请A版指点。
**** Hidden Message ***** 很久前的帖子了 不懂,来学习一下 都是隐藏的啊 我也看看 来学习下来学习下 有答案吗 {:face (356):} (?<=(?:^|\s)\D*?\d*)\d(?=((?:\d{3})+)(?:\D|$))有小数点的情况前面就应该也是数字,所以我这种不用考虑小数点的情况