找回密码
 加入
搜索
查看: 1960|回复: 11

[AU3基础] 正则替换 源字符串是0800%20

[复制链接]
发表于 2019-5-10 17:02:07 | 显示全部楼层 |阅读模式
本帖最后由 Mixrelax 于 2019-5-13 22:00 编辑
$str=StringRegExpReplace("0800%20", "", "") 

替换要求:
我要得到1820
替换规则:
开头若是0,替换成1,结尾若是0保留
中间若发现0,替换为空,若发现%替换为空。

发表于 2019-5-30 14:43:07 | 显示全部楼层
开头若是0,替换成1,结尾若是0保留

你这个条件好像没说清楚,或者我没理解清楚,目前我的理解是这样的,如果开头是0,则替换成1,否则保留;
如果结尾是0,则保留,否则也保留

不会使用正则,用字符串写的,希望能帮到你。

;~ 源字符串就是 0800%20
;~ 目标字符串是 1820
;~ 替换要求:
;~ 我要得到1820
;~ 替换规则:
;~ 开头若是0,替换成1,结尾若是0保留
;~ 中间若发现0,替换为空,若发现%替换为空。

Dim $str = '0800%20'
Dim $estr = ''


If StringMid($str, 1, 1) = '0' Then
        $estr = '1'
Else
        $estr = StringMid($str, 1, 1)
EndIf


For $i = 2 To StringLen($str) - 1
        $dstr = StringMid($str, $i, 1)
        Select
                Case $dstr = '%'
                        $estr = $estr
                Case $dstr = '0'
                        $estr = $estr
                Case Else
                        $estr &= $dstr
        EndSelect
Next

If StringMid($str, StringLen($str), 1) = '0' Then
        $estr &= '0'
Else
        $estr &= StringMid($str, StringLen($str), 1)
EndIf
发表于 2019-5-11 21:03:16 | 显示全部楼层
等大神来解答。。
发表于 2019-5-13 00:26:11 | 显示全部楼层
可以自找原因,为什么没人回!!!!
再就是不需要非得正则搞定呀,其它方法也一样能搞定.

就你提供的那组数据,你可字符串 切隔后对比  去选择,再重组选择的结果。
发表于 2019-5-13 17:08:35 | 显示全部楼层
提问时应尽量详细,分别描述:源字符串是什么,需要获取什么。并充分考虑源字符串可能的形式,在示例中体现。
 楼主| 发表于 2019-5-13 22:01:40 | 显示全部楼层
afan 发表于 2019-5-13 17:08
提问时应尽量详细,分别描述:源字符串是什么,需要获取什么。并充分考虑源字符串可能的形式,在示例中体现 ...
源字符串就是 0800%20
目标字符串是 1820

替换规则:
开头若是0,替换成1,结尾若是0保留
中间若发现0,替换为空,若发现%替换为空。
 楼主| 发表于 2019-5-13 22:03:15 | 显示全部楼层

希望能够得到解答。
发表于 2019-5-13 22:21:44 | 显示全部楼层
Local $str = '0800%20'
$str = StringRegExpReplace($str, '^0', '1')
$str = StringRegExpReplace($str, '(?<=.)[0%](?=.)', '')
MsgBox(0, '', $str)
发表于 2019-5-14 08:20:04 | 显示全部楼层
Local $str = '0800%20'
$str = StringRegExpReplace($str, '(?m)(0)([1-9]+?)([0%]*?)?([1-9]+?\d+)$', '1$2$4')
MsgBox(0, '', $str)
 楼主| 发表于 2019-5-14 13:30:23 来自手机 | 显示全部楼层
本帖最后由 Mixrelax 于 2019-5-18 20:07 编辑

Local $str = '800%20'
$str = StringRegExpReplace($str, '^(0)([1-9]+?)([0%]*?)?([1-9]+?\d+)$', '1$2$4')
这种情况下得到的结果不对
 楼主| 发表于 2019-5-14 13:35:28 来自手机 | 显示全部楼层
本帖最后由 Mixrelax 于 2019-5-18 20:07 编辑

多谢afan,老师的指导。
 楼主| 发表于 2019-5-30 16:54:55 | 显示全部楼层
niqindong 发表于 2019-5-30 14:43
开头若是0,替换成1,结尾若是0保留

你这个条件好像没说清楚,或者我没理解清楚,目前我的理解是这样的 ...

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

本版积分规则

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

GMT+8, 2024-12-23 20:49 , Processed in 0.200789 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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