找回密码
 加入
搜索
查看: 1565|回复: 6

怎么用关键字把连在一起的词语分开

  [复制链接]
发表于 2010-1-14 03:26:24 | 显示全部楼层 |阅读模式
本帖最后由 xdcysten 于 2010-1-14 20:42 编辑

比如返回的字符串是:$s = "CCTVCNNAUTOIT CNMMam15au3"

关键字分别是:
local $str[10]

$str[1] = "Mm"
$str[2] = "am15"
$str[3] = "au3"
$str[4] = "AUTOIT CN"
$str[5] = "CCTV"
$str[6] = "CNN"
$str[7] = "DIRECT TV"
$str[7] = "m TV"

如果字符串里有上面提供的关键字就分别将他们分开,没有的就忽略。

怎么返回一个字符串将上面返回的这些字符串用 | 分开呢, 返回就像是这样:"CCTV| CNN| AUTOIT CN| MM| am15| au3"

———————————————————————————————————————

还有一个问题就是怎么获得文件夹下未知的文件名,比如 c:\1 文件夹下会产生一个未知文件名的 *.bin文件(注:只有一个bin文件)
怎么用表达式返回这个文件的文件名 像这样:"a.bin"

评分

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

查看全部评分

发表于 2010-1-14 09:10:31 | 显示全部楼层
本帖最后由 水木子 于 2010-1-14 09:19 编辑

回复LZ的第一个问题。
#include <Array.au3>
local $str[8]
$str[0] = "Mm"
$str[1] = "am15"
$str[2] = "au3"
$str[3] = "AUTOIT CN"
$str[4] = "CCTV"
$str[5] = "CNN"
$str[6] = "DIRECT TV"
$str[7] = "m TV"
MsgBox(0, "合并数组", _ArrayToString($str, '|'))
也可以这样写
#include <Array.au3>
local $str[8] = ["Mm","am15","au3","AUTOIT CN","CCTV","CNN","DIRECT TV","m TV"]
MsgBox(0, "合并数组", _ArrayToString($str, '|'))
发表于 2010-1-14 09:14:08 | 显示全部楼层
本帖最后由 水木子 于 2010-1-14 09:40 编辑

回复LZ的第二个问题(帮助文档示范)
$Path = 'C:'
$search = FileFindFirstFile($Path&'\*.*')

If $search = -1 Then
    MsgBox(0, "错误", "没有文件/目录 匹配搜索")
    Exit
EndIf

While 1
     $file = FileFindNextFile($search) 
    If @error Then ExitLoop
    MsgBox(4096, "文件:", $file)
WEnd
FileClose($search)

评分

参与人数 1金钱 +10 收起 理由
xdcysten + 10 谢谢帮忙

查看全部评分

发表于 2010-1-14 10:30:23 | 显示全部楼层
可以用 StringReplace() 函数替换啊

比如把 “au3” 替换成 “|au3|”就可以了啊, 如 StringReplace("CCTVCNNAUTOIT CNMMam15au3", "CCTV", " |CCTV| ")
如果要更复杂的,也可以用 正则替换 StringRegExpReplace ()
发表于 2010-1-14 13:32:56 | 显示全部楼层
 楼主| 发表于 2010-1-14 17:39:48 | 显示全部楼层
本帖最后由 xdcysten 于 2010-1-14 17:44 编辑

可能我表达得不太清楚,我想要的是这样的:
给出的字符串是:$s = "CCTVCNNAUTOIT CNMMam15au3"

最终的字符串变成 $s = "CCTV| CNN| AUTOIT CN| MM| am15| au3" 这是我想要得到的

注意:给出的字符串里是没有关键词  "DIRECT TV" 这个的,怎么可以避开"DIRECT TV"这个关键词从而得到"CCTV| CNN| AUTOIT CN| MM| am15| au3"

$str[1] = "Mm"
$str[2] = "am15"
$str[3] = "au3"
$str[4] = "AUTOIT CN"
$str[5] = "CCTV"
$str[6] = "CNN"
$str[7] = "DIRECT TV"
$str[7] = "m TV"

可能AFAN版主的代码能行得通,但本人实在没那功力看得明白,看来还要向各位多多学习。

第二个问题解决了,感谢水木子。
发表于 2010-1-14 20:16:30 | 显示全部楼层
回复 6# xdcysten
Local $s = "CCTVCNNAUTOIT CNMMam15au3", $i
Local $str[8]
$str[0] = "Mm"
$str[1] = "am15"
$str[2] = "au3"
$str[3] = "AUTOIT CN"
$str[4] = "CCTV"
$str[5] = "CNN"
$str[6] = "DIRECT TV"
$str[7] = "m TV"
For $i = 0 To UBound($str) - 1
        $s = StringRegExpReplace($s, '(?i)' & $str[$i], $str[$i] & '\| ')
Next
$s = StringRegExpReplace($s, '\| $', '')
MsgBox(0, "CCTVCNNAUTOIT CNMMam15au3", $s)

评分

参与人数 1金钱 +20 收起 理由
xdcysten + 20 厉害、佩服

查看全部评分

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

本版积分规则

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

GMT+8, 2025-1-12 08:43 , Processed in 0.079060 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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