a000000 发表于 2010-1-7 15:52:58

关于字符替换问题

本帖最后由 a000000 于 2010-1-7 20:26 编辑

0.txt内容如下:


11111111
22222222
33333333
44444444
55555555
66666666
77777777
88888888
99999999

dsafsdafsda   127.0.0.1123.133.33.98:8563
00000000
000000000000

其中ip:123.133.33.98为一个变量数值,要求每次都替换这个ip别的都不动,请高手指点,想了很多方法都无法完美的只替换那一个ip

顽固不化 发表于 2010-1-7 15:55:14

8563动不动?

a000000 发表于 2010-1-7 15:55:44

本帖最后由 a000000 于 2010-1-7 15:59 编辑

8563不动,别的都不动,8563是个端口,只是那个ip是动态的,实际文件中下面还有好多行

afan 发表于 2010-1-7 16:37:03

回复 1# a000000


    123.133.33.98后面应该是:而不是:吧

afan 发表于 2010-1-7 16:48:19

$Str = _
'11111111' & @CRLF & _
'22222222' & @CRLF & _
'33333333' & @CRLF & _
'44444444' & @CRLF & _
'55555555' & @CRLF & _
'66666666' & @CRLF & _
'77777777' & @CRLF & _
'88888888' & @CRLF & _
'99999999' & @CRLF & _
'' & @CRLF & _
'dsafsdafsda   127.0.0.1123.133.33.98:8563' & @CRLF & _
'00000000' & @CRLF & _
'000000000000'

Msgbox(0, '原始', $str)
$ip = '255.255.255.255'
Msgbox(0, '修改', StringRegExpReplace($str, '[^\s]+(?=\:\d+)', $ip))

298311657 发表于 2010-1-7 17:01:20

$file = FileOpen("1.txt", 0)
$chars = FileRead($file)
FileClose($file)
$nOffset = 1
While 1
        $ip = StringRegExp($chars,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)', 2,$nOffset)       
        If @error = 0 Then
                $nOffset = @extended
        Else
                ExitLoop
        EndIf
        $port = StringMid($chars,$nOffset+1,4)
        If $ip <> '127.0.0.1' And $port = '8563' Then
;~                 MsgBox(0, $port , $ip)
                $chars = StringReplace($chars, $ip , "97.121.124.125")
                $file = FileOpen("1.txt", 2)
                FileWrite($file,$chars)
                FileClose($file)
        EndIf
WEnd使用正则查找

a000000 发表于 2010-1-7 19:18:29

使用正则查找
298311657 发表于 2010-1-7 17:01 http://www.autoitx.com/images/common/back.gif


    又遇到问题:原始文件中:
"SDWB" "PvPGN Closed Realm" 192.168.1.88:6113 127.0.0.1:6113 192.168.1.1/24

结果出现2个6113   (127.0.0.1是我要修改的ip)   我改成
      If $ip <> '192.168.1.88:6113' And $port = '6113 192.168.1.1/24' Then

却不工作了

298311657 发表于 2010-1-7 19:22:12

:face (32):别逼我骂人!
$ip正则查的的IP,你加个端口上去干嘛?$port取的是查找的的IP后面跟的端口,你那是什么东西?

a000000 发表于 2010-1-7 19:27:01

本帖最后由 a000000 于 2010-1-7 19:45 编辑

别逼我骂人!
$ip正则查的的IP,你加个端口上去干嘛?$port取的是查找的的IP后面跟的端口, ...
298311657 发表于 2010-1-7 19:22 http://www.autoitx.com/images/common/back.gif

哈哈,多谢大侠指点,我菜得很,还没弄明白正则,呵呵。多谢啦

a000000 发表于 2010-1-7 19:32:54

再请教大侠一点,比如这样的:
192.168.1.88                        127.0.0.1                192.168.1.1/24

127.0.0.1是需要修改的ip,大侠稍微指点一下,另外文件没有扩展名,名字是:d2gstrans

不知道这样的可以修改不?

a000000 发表于 2010-1-7 19:53:41

请明白正则的大侠帮忙

顽固不化 发表于 2010-1-7 20:03:09

多潜水学习吧,
多消化帮助吧,
多做小练习吧,
多。。。。。吧,
自己完成90%,10%问问别人,别整倒了。

a000000 发表于 2010-1-7 20:04:51

多潜水学习吧,
多消化帮助吧,
多做小练习吧,
多。。。。。吧,
自己完成90%,10%问问别人,别整倒了 ...
顽固不化 发表于 2010-1-7 20:03 http://www.autoitx.com/images/common/back.gif


   大侠名言,铭记在心,可 急用啊,大侠,稍微帮下忙啊

298311657 发表于 2010-1-7 20:11:15

$file = FileOpen("d2gstrans", 0)
$chars = FileRead($file)
FileClose($file)
Dim $nOffset = 1,$num = 0

While 1
      $ip = StringRegExp($chars,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)', 2,$nOffset)      
      If @error = 0 Then
                $nOffset = @extended
                                $num += 1
      Else
                ExitLoop
      EndIf
      If $num = 2 Then;正则搜到的第2个IP
;~               MsgBox(0, '' , $ip)
                $chars = StringReplace($chars, $ip , "97.121.124.125")
                $file = FileOpen("d2gstrans", 2)
                FileWrite($file,$chars)
                FileClose($file)
                                ExitLoop
      EndIf
WEnd还是正则

a000000 发表于 2010-1-7 20:23:52

多谢298311657 以及顽固不化 大侠的帮助(幸亏他们2人的帮助),为以后有用的着的参考。暗黑服务器配置文件realm.list跟d2gstrans自动获取外网ip并自动修改文件内ip代码最终汇聚如下:

TCPStartup()
$newIP=TCPNameToIP("sdjt.vicp.net")
TCPShutdown ( )

$file = FileOpen("realm.list", 0)

$chars = FileRead($file)

FileClose($file)

$nOffset = 1

While 1

      $ip = StringRegExp($chars,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)', 2,$nOffset)      

      If @error = 0 Then

                $nOffset = @extended

      Else

                ExitLoop

      EndIf

      $port = StringMid($chars,$nOffset+1,4)

      If $ip <> '192.168.1.88' And $port = '6113' Then

;~               MsgBox(0, $port , $ip)

                $chars = StringReplace($chars, $ip , $newIP)

                $file = FileOpen("realm.list", 2)

                FileWrite($file,$chars)

                FileClose($file)

      EndIf

WEnd









以及

TCPStartup()
$newIP=TCPNameToIP("sdjt.vicp.net")
TCPShutdown ( )


$file = FileOpen("d2gstrans", 0)
$chars = FileRead($file)
FileClose($file)
Dim $nOffset = 1,$num = 0

While 1
      $ip = StringRegExp($chars,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)', 2,$nOffset)      
      If @error = 0 Then
                $nOffset = @extended
                              $num += 1
      Else
                ExitLoop
      EndIf
      If $num = 2 Then;正则搜到的第2个IP
;~               MsgBox(0, '' , $ip)
                $chars = StringReplace($chars, $ip , $newIP)
                $file = FileOpen("d2gstrans", 2)
                FileWrite($file,$chars)
                FileClose($file)
                              ExitLoop
      EndIf
WEnd
页: [1] 2
查看完整版本: 关于字符替换问题