找回密码
 加入
搜索
查看: 5465|回复: 14

[AU3基础] [已解决] 1.txt文件中字符串用2.txt中相应存在的字符串替换~!!!!

  [复制链接]
发表于 2010-9-11 21:33:03 | 显示全部楼层 |阅读模式
本帖最后由 双双 于 2010-9-13 18:49 编辑

1.txt:
<?xml version="1.0" encoding="utf-8"?>
<StringBundle version="1.0">
        <String id="AAA">AAA1</String>
        <String id="BBB">BBB1</String>
        <String id="CCC">CCC1</String>
        <!-- PRODUCT_IPC_PLAT-->
......
2.txt:
<?xml version="1.0" encoding="utf-8"?>
<StringBundle version="1.0">
        <String id="AAA">甲甲1</String>
        <String id="BBB">乙乙1</String>
        <String id="CCC">丙丙1</String>
        <!-- PRODUCT_IPC_PLAT-->
......



1.txt中<String id="后面"~~~双引号中相同的~~的后面的~~~AAA1...BBB1...CCC1~~~换成2.txt中的甲甲1...乙乙1(如果存在)

1.txt中还有别的东东~~~2.txt也还有另外的东东哦~~~


在线等!!!!!!!!!!!!!!!

评分

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

查看全部评分

发表于 2010-9-12 03:29:10 | 显示全部楼层
那你直接要2.txt就好了吗,还替换干啥
 楼主| 发表于 2010-9-12 09:57:52 | 显示全部楼层
1.txt中还有别的东东~~~2.txt也还有另外的东东哦~~~
发表于 2010-9-12 11:59:02 | 显示全部楼层
$Str1 = _
                '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                '<StringBundle version="1.0">' & @CRLF & _
                '        <String id="AAA">AAA1</String>' & @CRLF & _
                '        <String id="BBB">BBB1</String>' & @CRLF & _
                '        <String id="CCC">CCC1</String>' & @CRLF & _
                '        <!-- PRODUCT_IPC_PLAT-->'
Msgbox(0, '原字符串', $str1)

$Str2 = _
                '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                '<StringBundle version="1.0">' & @CRLF & _
                '        <String id="AAA">甲甲1</String>' & @CRLF & _
                '        <String id="BBB">乙乙1</String>' & @CRLF & _
                '        <String id="CCC">丙丙1</String>' & @CRLF & _
                '        <!-- PRODUCT_IPC_PLAT-->' & @CRLF
Msgbox(0, '原字符串', $str2)

$s2 = StringRegExpReplace($str2, '(?s).+?(<String id.+?<!).+', '$1')
$str1 = StringRegExpReplace($str1, '(?s)<String id.+?<!', $s2)

Msgbox(0, '替换后', $str1)

评分

参与人数 2金钱 +40 贡献 +5 收起 理由
双双 + 10 利害哦~
Duvet + 30 + 5 學習了

查看全部评分

发表于 2010-9-12 12:30:53 | 显示全部楼层
高明啊,佩服!!!
顺便请教下 替换字符中 $1,什么含义呢?
 楼主| 发表于 2010-9-12 12:57:07 | 显示全部楼层
多谢~~晚上来试~~

回头送你奖品~~~
 楼主| 发表于 2010-9-12 17:23:46 | 显示全部楼层
本帖最后由 双双 于 2010-9-12 17:37 编辑

$1~~应该是替换字符~~
发表于 2010-9-12 22:04:40 | 显示全部楼层
回复 5# kxing


    反向引用第一个组,知道你已经在另一贴了解了~
 楼主| 发表于 2010-9-12 22:51:14 | 显示全部楼层
$Str1 =  _
                '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                '<StringBundle version="1.0">' & @CRLF & _
                '        <String id="AAA">AAA1</String>' & @CRLF & _
                '        <String id="BB">BBB</String>' & @CRLF & _
                '        <String id="CCC">CCC1</String>' & @CRLF & _
                '        <!-- PRODUCT_IPC_PLAT-->'
Msgbox(0, '原字符串', $str1)
 
$Str2 = _
                '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                '<StringBundle version="1.0">' & @CRLF & _
                '        <String id="AAA">甲甲1</String>' & @CRLF & _
                '        <String id="BBB">乙乙1</String>' & @CRLF & _
                '        <String id="CCC">丙丙1</String>' & @CRLF & _
                '        <!-- PRODUCT_IPC_PLAT-->' & @CRLF
Msgbox(0, '原字符串', $str2)
 
$s2 = StringRegExpReplace($str2, '(?s).+?(<String id.+?<!).+', '$1')
$str1 = StringRegExpReplace($str1, '(?s)<String id.+?<!', $s2)
 
Msgbox(0, '替换后', $str1)
有点问题~~`把1.txt"BBB"改为"BB"~~~在2.txt中没有的~~结果还有~~
 楼主| 发表于 2010-9-12 22:56:19 | 显示全部楼层
1.txt;2.txt~~并不是一一对应的~
1.txt中还有别的东东~~~2.txt也还有另外的东东哦~~~
发表于 2010-9-12 23:03:21 | 显示全部楼层
回复 10# 双双


    问题描述时所举的的例子应当尽量注明多种情况,像一楼的例子都是AAA BBB CCC 肯定不会有预期的答案…

p.s 去掉标题的“有奖励”可能会有更多人回答…
发表于 2010-9-12 23:20:37 | 显示全部楼层
正则偶还不会哦!
发表于 2010-9-12 23:38:20 | 显示全部楼层
本帖最后由 C.L 于 2010-9-12 23:42 编辑

回复 9# 双双
不是一一对应的话:

$txt1 = _
        '<?xml version="1.0" encoding="utf-8"?>' & _
        '<StringBundle version="1.0">'& _
        '<String id="AAA">AAA1</String>'& _
        '<String id="BB">BBB1</String>'& _
        '<String id="CCC">CCC1</String>'& _
        '<!-- PRODUCT_IPC_PLAT-->'
$txt2 = _
        '<?xml version="1.0" encoding="utf-8"?>'& _
        '<StringBundle version="1.0">'& _
        '<String id="AAA">甲甲1</String>'& _
        '<String id="BBB">乙乙1</String>'& _
        '<String id="CCC">丙丙1</String>'& _
        '<!-- PRODUCT_IPC_PLAT-->'

MsgBox (0,'原始文件','1.txt:'&@CRLF&$txt1&@CRLF&'2.txt:'&@CRLF&$txt2)
$aTxt1 = StringRegExp ($txt1,'<String id="(.+?)">(.+?)</String>',3)
$aTxt2 = StringRegExp ($txt2,'<String id="(.+?)">(.+?)</String>',3)
For $i=0 To UBound($aTxt2)-1 Step 2
        For $j=0 To UBound ($aTxt1)-1 Step 2
                If $aTxt1[$j] == $aTxt2[$i] Then
                        $txt1 = StringRegExpReplace ($txt1,'<String id="'&$aTxt1[$j]&'">'&$aTxt1[$j+1], _
                        '<String id="'&$aTxt2[$i]&'">'&$aTxt2[$i+1])
                EndIf
        Next
        
Next
MsgBox (0,'$txt1替换后',$txt1)

评分

参与人数 2金钱 +35 收起 理由
双双 + 10
afan + 25

查看全部评分

发表于 2010-9-13 00:37:24 | 显示全部楼层
$Str1 = _
                '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                '<StringBundle version="1.0">' & @CRLF & _
                '        <String id="AAA">AAA1</String>' & @CRLF & _
                '        <String id="BBB">BBB1</String>' & @CRLF & _
                '        <String id="CCC">CCC1</String>' & @CRLF & _
                '        <String id="xxx">xxx</String>' & @CRLF & _
                '        <!-- PRODUCT_IPC_PLAT-->' 
$Str2 = _
                '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                '<StringBundle version="1.0">' & @CRLF & _
                '        <String id="AAA">甲甲1</String>' & @CRLF & _
                '        <String id="BB">乙乙1</String>' & @CRLF & _
                '        <String id="CCC">丙丙1</String>' & @CRLF & _
                '        <!-- PRODUCT_IPC_PLAT-->' & @CRLF

$s2_sR = StringRegExp($str2, '<String id="(.+?)">(.+?)<', 3)
For $i = 0 to UBound($s2_sR) - 1 step 2
        $str1 = StringRegExpReplace($str1, '(?<=\<String id="' & $s2_sR[$i] & '">)[^<]+', $s2_sR[$i + 1])
Next
 
Msgbox(0, '替换后', $str1)

评分

参与人数 2金钱 +40 收起 理由
C.L + 30 学习了
双双 + 10

查看全部评分

 楼主| 发表于 2010-9-13 09:47:10 | 显示全部楼层
晚上再看~~

三年了~~换了不少人~~可人还是哪好!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 02:03 , Processed in 0.111105 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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