Mixrelax 发表于 2019-5-10 17:02:07

正则替换 源字符串是0800%20

本帖最后由 Mixrelax 于 2019-5-13 22:00 编辑

$str=StringRegExpReplace("0800%20", "", "")

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

niqindong 发表于 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

862228699 发表于 2019-5-11 21:03:16

等大神来解答。。

绿色风 发表于 2019-5-13 00:26:11

可以自找原因,为什么没人回!!!!
再就是不需要非得正则搞定呀,其它方法也一样能搞定.

就你提供的那组数据,你可字符串 切隔后对比去选择,再重组选择的结果。

afan 发表于 2019-5-13 17:08:35

提问时应尽量详细,分别描述:源字符串是什么,需要获取什么。并充分考虑源字符串可能的形式,在示例中体现。

Mixrelax 发表于 2019-5-13 22:01:40

afan 发表于 2019-5-13 17:08
提问时应尽量详细,分别描述:源字符串是什么,需要获取什么。并充分考虑源字符串可能的形式,在示例中体现 ...

源字符串就是 0800%20
目标字符串是 1820

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

Mixrelax 发表于 2019-5-13 22:03:15

Mixrelax 发表于 2019-5-13 22:01


希望能够得到解答。

afan 发表于 2019-5-13 22:21:44

Local $str = '0800%20'
$str = StringRegExpReplace($str, '^0', '1')
$str = StringRegExpReplace($str, '(?<=.)(?=.)', '')
MsgBox(0, '', $str)

haijie1223 发表于 2019-5-14 08:20:04

Local $str = '0800%20'
$str = StringRegExpReplace($str, '(?m)(0)(+?)(*?)?(+?\d+)$', '1$2$4')
MsgBox(0, '', $str)

Mixrelax 发表于 2019-5-14 13:30:23

本帖最后由 Mixrelax 于 2019-5-18 20:07 编辑

Local $str = '800%20'
$str = StringRegExpReplace($str, '^(0)(+?)(*?)?(+?\d+)$', '1$2$4')
这种情况下得到的结果不对

Mixrelax 发表于 2019-5-14 13:35:28

本帖最后由 Mixrelax 于 2019-5-18 20:07 编辑

多谢afan,老师的指导。

Mixrelax 发表于 2019-5-30 16:54:55

niqindong 发表于 2019-5-30 14:43
开头若是0,替换成1,结尾若是0保留

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

谢谢 你:face (10):
页: [1]
查看完整版本: 正则替换 源字符串是0800%20