找回密码
 加入
搜索
查看: 2732|回复: 1

[AU3基础] 正则替换效率问题求助【已解决】

[复制链接]
发表于 2013-7-11 11:29:20 | 显示全部楼层 |阅读模式
本帖最后由 zldfsz 于 2013-7-13 00:39 编辑

有一些字符串需要将其替换掉,我现在是用的如下方法替换,能不能用一个正则表达式就能实现下面几步的功能,或者有什么办法能将代码简短。对正则不怎么了解,忘各位高人指点一下
就是将全角替换为半角,方括号替换为小括号,X替换为*

$str  ="[】)\](jr【dfgfdf】()】)\]\][xfgfdfxdfjkXgXjh×+-g/";有类似这样的字符串将其按下面方法替换掉
$str = StringRegExpReplace($str, "[[(【]", "(")
$str = StringRegExpReplace($str, "[】)\]]", ")")
$str = StringRegExpReplace($str, "[xxXX×]", "*")
$str = StringRegExpReplace($str, "+", "+")
$str = StringRegExpReplace($str, "-", "-")
$str = StringRegExpReplace($str, "/", "/")
MsgBox(0, '替换结果', $str)
原以为可以用一个正则表达式就能实现,看来只有这样了,感谢 user3000 兄解答
发表于 2013-7-11 12:49:17 | 显示全部楼层
本帖最后由 user3000 于 2013-7-11 12:51 编辑

回复 1# zldfsz


    替换的结果都不一致,一个正则做不来吧?
但如果考虑用数组存放正则表达式及替换结果,管理,增删\表达式和替换内容,会比较容易和直观些.
$str  ="[】)\](jr【dfgfdf】()】)\]\][xfgfdfxdfjkXgXjh×+-g/";有类似这样的字符串将其按下面方法替换掉
$str1 = $str
$str1 = StringRegExpReplace($str1, "[[(【]", "(")
$str1 = StringRegExpReplace($str1, "[】)\]]", ")")
$str1 = StringRegExpReplace($str1, "[xxXX×]", "*")
$str1 = StringRegExpReplace($str1, "+", "+")
$str1 = StringRegExpReplace($str1, "-", "-")
$str1 = StringRegExpReplace($str1, "/", "/")
$str2 = $str
Local $aArray[6][2] = [ _
                           ['[\[(【]', "\("],['[】)\]]', "\)"],['[xxXX×]', "\*"], _
                           ['+', "\+"],["-", "\-"],["/", "/"] _
                                          ]
For $i = 0 To 5
        $str2 = StringRegExpReplace($str2, $aArray[$i][0], $aArray[$i][1])
Next
MsgBox(0, '替换结果', $str1 & @CR & $str2)

评分

参与人数 1金钱 +50 贡献 +5 收起 理由
zldfsz + 50 + 5 恩,用循环,看起来是要好点

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-29 01:25 , Processed in 0.123765 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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