找回密码
 加入
搜索
查看: 7119|回复: 16

[效率算法] 如何用正则方法 将任意长度数字,间隔3位加个","?

  [复制链接]
发表于 2010-4-9 13:46:14 | 显示全部楼层 |阅读模式
比如 123456,变成123,456
123不变,
1235900,变成1,235,900
12345678.90,变成12,345,678.90
刚学正则,以上的正则弄不来,高手请教!
 楼主| 发表于 2010-4-9 13:50:09 | 显示全部楼层
有高手在线么,在线等ING
发表于 2010-4-9 13:51:19 | 显示全部楼层
这个以前弄过,得找找。记得可以不用正则
 楼主| 发表于 2010-4-9 14:16:39 | 显示全部楼层
A大 加油
发表于 2010-4-9 14:34:00 | 显示全部楼层
回复 4# superflq


    找到了,我再测试整理下,等下发到UDF区~
 楼主| 发表于 2010-4-9 14:39:37 | 显示全部楼层
是用正则的么
发表于 2010-4-9 14:40:20 | 显示全部楼层
非正则
 楼主| 发表于 2010-4-9 14:49:02 | 显示全部楼层
那么复杂,需要变成UDF啊
发表于 2010-4-9 16:05:11 | 显示全部楼层
$a1=InputBox(0,"","")
Dim $text
If StringIsDigit ($a1)=1  Then
        For $i =3 To StringLen ($a1) Step 3
                If $i-StringLen ($a1)=0 Then
                        $text=StringLeft($a1,3)&$text
                        ExitLoop
                EndIf
                $text=$text&","&StringMid ($a1,StringLen ($a1)-$i,3)
        Next
        MsgBox(0,"",StringLeft ($a1,Mod ( StringLen ($a1) , 3 ))&$text)
EndIf

评分

参与人数 1金钱 +10 收起 理由
superflq + 10 谢谢!,我在琢磨希望可以用正则实现

查看全部评分

发表于 2010-4-9 16:09:44 | 显示全部楼层
$a1=InputBox(0,"","")
Dim $text
If StringIsDigit ($a1)=1  Then
        For $i =3 To StringLen ($a1) Step ...
jhun 发表于 2010-4-9 16:05



    有些问题,你再测试下,比如输入1234,得到1,123
发表于 2010-4-9 16:10:30 | 显示全部楼层
是用正则的么
superflq 发表于 2010-4-9 14:39



    正在按你的要求改用正则……
发表于 2010-4-9 16:12:02 | 显示全部楼层
有些问题,你再测试下,比如输入1234,得到1,123
afan 发表于 2010-4-9 16:09



    不好意思,自己测试全是输1的,所以……我再检查下
发表于 2010-4-9 16:37:47 | 显示全部楼层
$a1=InputBox(0,"","")
Dim $text
If StringIsDigit ($a1)=1  Then
        For $i =3 To StringLen ($a1) Step 3
                If $i-StringLen ($a1)=0 Then
                        $text=StringLeft($a1,3)&$text
                        ExitLoop
                EndIf
                $text=","&StringMid ($a1,StringLen ($a1)-$i+1,3)&","&$text
        Next
        If StringRight ( $text, 1 )="," Then $text=StringTrimRight ( $text, 1 )
        MsgBox(0,"",StringReplace (StringLeft ($a1,Mod ( StringLen ($a1) , 3 ))&$text,",,",","))
EndIf
               
应该能用了,写得很恶心,不想改了,身体不舒服

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-4-9 16:41:58 | 显示全部楼层
$a1=InputBox(0,"","")
Dim $text
If StringIsDigit ($a1)=1  Then
        For $i =3 To StringLen ($a1) Step ...
jhun 发表于 2010-4-9 16:37


辛苦了,可是要是123456.12就直接出错
只要带"."+数字就会出错
发表于 2010-4-9 16:46:23 | 显示全部楼层
不是出错,是我一开始就没打算有小数点,所以加了句If StringIsDigit ($a1)=1  Then
有小数点直接不执行,不过就算去掉这句也不行,要重写,我再加上吧
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-15 11:19 , Processed in 0.079732 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表