找回密码
 加入
搜索
查看: 4233|回复: 12

[AU3基础] 检测文本中是是否存在相同的字符串,存在删除,不存在则添加

 火.. [复制链接]
发表于 2014-11-6 12:44:12 | 显示全部楼层 |阅读模式
检测文本中是是否存在相同的字符串,存在删除,不存在则添加
这个大家给提供一个简单的思路吧,是用数组吗?用数组又要写回去,能有高效的一点的方法吗
发表于 2014-11-6 13:31:14 | 显示全部楼层
StringInStr 
 楼主| 发表于 2014-11-6 14:14:39 | 显示全部楼层
回复 2# haijie1223
是用数组吗,还是怎么来啊  麻烦说明 下 谢谢了
发表于 2014-11-6 16:59:36 | 显示全部楼层
回复 3# darker50


    请提供字符串
 楼主| 发表于 2014-11-6 19:20:13 | 显示全部楼层
回复 4# haijie1223
就是修改hosts文件,
点击一个按钮hosts文件添加字段10.20.23.213 baidu.com
点击一个另一个按钮hosts文件删除字段10.20.23.213 baidu.com
发表于 2014-11-6 19:48:23 | 显示全部楼层
先stringreplace指定字符串为空,然后如果@extended=0就添加
 楼主| 发表于 2014-11-6 20:43:46 | 显示全部楼层
回复 6# kevinch
这个添加的方式,如果是删除呢?用数组的方式吗?谢谢了
 楼主| 发表于 2014-11-6 21:12:10 | 显示全部楼层
_ReplaceStringInFile这个函数可以做到,但只是匹配的过程,但也基本满足我要求了,谢谢上面两位大大了
发表于 2014-11-7 03:11:53 | 显示全部楼层
回复 8# darker50


    善用搜索 ,在搜索里输入hosts 得到相关主题有十贴,将KLU3K兄弟的代码给你拿来举个例子


#cs
在修改HOSTS文件时候常遇到修改保存后无效的情况,这里要提醒大家注意的一点:很多人是写在最后行,写完最后一行后在没有回车的情况下,这一行是不生效的。一定要记得回车。

建议大家遵循这样的习惯:“ip地址+空格+域名+回车” 添加记录。

到VISTA 或者 windows 7 操作系统无法打开和编辑的情况,提示:“不能创建文件” 或者 “文件操作失败”等提示,是因为安全机制UAC造成的,你可以使用以下方法解决:
1.在“开始”菜单 ->“搜索”中输入notepad ,然后使用Ctrl+Shift+Enter快捷键即可调用具有系统管理员权限的“记事本”编辑器。
2.在“开始”菜单中单击“所有程序”,单击“附件”,右键单击“记事本”,然后单击“以管理员身份运行”。
3.打开HOSTS 文件所在位置进行编辑保存

  C:\Windows\System32\drivers\etc
#ce
#NoTrayIcon ;隐藏系统托盘图标
#RequireAdmin ;在Vista下获得管理员权限运行,这个不知道对不对.呵呵.
FileSetAttrib(@SystemDir&"\drivers\etc\hosts","-RSAH") ;去掉Hosts文件的只读属性,有些人的文件可能是只读的.
$File = @SystemDir&"\drivers\etc\hosts" 
 
If FileExists(@SystemDir&"\drivers\etc\hosts") = 0 Then
        MsgBox(0, "错误:", "Hosts文件可能不存在。")
EndIf
;如果没有HOSTS文件则提示出错.
 
$String = FileRead($File)
;读取文件HOSTS文件的全部内容.
 
$LocalHst1 = InputBox ("查找","要找的字符"&@CRLF&@CRLF&"写入hosts文件时:"&@CRLF&" ip地址+空格+域名+回车","127.0.0.1 localhost","")
;定义要查找的几个字符串
 
$LocalHst1_Comp = StringInStr($String,$LocalHst1)
;设定查找内容,在读取的HOSTS文,查找相应定义过的查找内容
 
If $LocalHst1_Comp = 0 Then
           FileCopy($File, @SystemDir&"\drivers\etc\hosts - 副本")
       FileWriteLine($File, @CRLF&"127.0.0.1 localhost"& @CRLF)
Else
        MsgBox(0,"已存在LocalHst1",$LocalHst1)
                FileDelete($File)
                FileCreate($File,"")                
EndIf
;查找$LocalHst1的地址是否存在,不存在则写入
 
 
FileClose($File) ;关闭文件


Func FileCreate($sFilePath, $sString)
    Local $bReturn = True ; 创建存储布尔值的变量.
    If FileExists($sFilePath) = 0 Then $bReturn = FileWrite($sFilePath, $sString) = 1 ; 如果 FileWrite() 返回 1, 这将为 True; 否则为 False.
    Return $bReturn ; 返回布尔值 True 或 False 取决于 FileWrite() 的返回值.
EndFunc   ;==>FileCreate

发表于 2014-11-7 08:09:07 | 显示全部楼层
回复 7# darker50
第一次的stringreplace为空如果@extended不为0就表明已经替换掉了,也就是删除了
发表于 2014-11-11 16:33:17 | 显示全部楼层
学习受教了,感谢感谢,非常感谢
发表于 2014-11-13 21:28:07 | 显示全部楼层
多谢分享。
发表于 2014-12-11 10:34:44 | 显示全部楼层
学习了,感谢分享!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 07:26 , Processed in 0.085473 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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