找回密码
 加入
搜索
查看: 4118|回复: 8

[效率算法] 用一句正则替换将数字后面加一个0[已解决]

  [复制链接]
发表于 2010-11-12 14:22:57 | 显示全部楼层 |阅读模式
本帖最后由 superflq 于 2010-11-12 15:29 编辑

我有ini格式的文件
里面有
a = 1
b = 2
c = 3
a = 44
"b = 55
c = 66
a = 777
b = 888
c = 999
我想把其中的“a =”后面的数字乘以10,但是考虑到乘以10比较难实现,就像了个办法在这个数字后面加一个0,变成
a = 10
b = 2
c = 3
a = 440
"b = 55
c = 66
a = 7770
b = 888
c = 999
不知道有没高手有办法
$a = "a = 1" & @CRLF & _
        "b = 2" & @CRLF & _
        "c = 3" & @CRLF & _
        "a = 44" & @CRLF & _
        "b = 55" & @CRLF & _
        "c = 66" & @CRLF & _
        "a = 777" & @CRLF & _
        "b = 888" & @CRLF & _
        "c = 999"
        
$b = StringRegExpReplace($a,
MsgBox(0,0,$b)
;用一句正则替换
;让结果        
#CS 
$b = "a = 10" & @CRLF & _
           "b = 2" & @CRLF & _
           "c = 3" & @CRLF & _
           "a = 440" & @CRLF & _
           "b = 55" & @CRLF & _
           "c = 66" & @CRLF & _
           "a = 7770" & @CRLF & _
           "b = 888" & @CRLF & _
           "c = 999"
#CE

;就是说要把“a = ”后面的数字后面加一个0


;这个问题纠结了我好久了,有没高手可以帮忙解决下

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-11-12 14:30:09 | 显示全部楼层
Local $Str = _
                'a = 1' & @CRLF & _
                'b = 2' & @CRLF & _
                'c = 3' & @CRLF & _
                'a = 44' & @CRLF & _
                'b = 55' & @CRLF & _
                'c = 66' & @CRLF & _
                'a = 777' & @CRLF & _
                'b = 888' & @CRLF & _
                'c = 999'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExpReplace($str, '(?<=\n|^)(a\h*=.*\d+)', '${1}0', 0)
MsgBox(0, '替换结果', $Test)

评分

参与人数 1金钱 +30 收起 理由
binghc + 30 还能这么用,学习了

查看全部评分

 楼主| 发表于 2010-11-12 14:32:31 | 显示全部楼层
afan 发表于 2010-11-12 14:30



    超版果然,无敌,好好研究研究
发表于 2010-11-12 14:36:40 | 显示全部楼层
"以解决"有错别字… _ _||
 楼主| 发表于 2010-11-12 14:57:09 | 显示全部楼层
"以解决"有错别字… _ _||
afan 发表于 2010-11-12 14:36



    '${1}0'不明白为什么这里是这么用的,一般不是 $1的么,
发表于 2010-11-12 15:00:39 | 显示全部楼层
$1后面加0不成$10了?为了区别,必须加{}
 楼主| 发表于 2010-11-12 15:05:45 | 显示全部楼层
(?<=\n|^)(a\h*=.*\d+)

这个里面的\h是什么东东,好像没见过这个么
发表于 2010-11-12 15:08:38 | 显示全部楼层
\h 水平空白符,这里就是匹配空格。
 楼主| 发表于 2010-11-12 15:28:25 | 显示全部楼层
谢谢超版解答~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2025-1-11 20:50 , Processed in 0.078026 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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