VBS脚本统计红楼梦中贾宝玉出现的次数
文件:
链接:https://pan.baidu.com/s/1T-XIbIHzMZiIX8IiSMcZdg
提取码:sti6
脚本代码:
Dim fso, ts, s
' 创建Scripting.FileSystemObject对象,用于操作磁盘、文件夹或文本文件
Set fso = CreateObject("Scripting.FileSystemObject")
' 打开一个指定的文件并返回一个 TextStream 对象,该对象可用于对文件进行读、写、追加操作,第二个参数表示以只读的形式打开文件
Set ts = fso.OpenTextFile("C:\Users\23820\Desktop\《红楼梦》作者:曹雪芹.txt", 1)
' 读入全部 TextStream 文件,并将文件中的文本内容以字符串的形式返回
s = ts.ReadAll
Dim regex, match, matchs, sum,name_count(10)
' 创建正则表达式
Set regex = New RegExp
' 匹配模式,| 表示匹配左右任意一字符串
regex.Pattern = "贾宝玉|混世魔王|绛洞花王|富贵闲人|无事忙|怡红公子|文妙真人|情哥哥|多情公子|神瑛侍者"
' 设置全局匹配
regex.Global = True
' 执行搜索
Set matchs = regex.Execute(s)
sum = 0
For i = 0 to 10
name_count(i) = 0
Next
' 遍历匹配集合
For Each match In matchs
sum = sum + 1
Select Case match
Case "贾宝玉" name_count(0) = name_count(0) +1
Case "混世魔王" name_count(1) = name_count(1) +1
Case "绛洞花王" name_count(2) = name_count(2) +1
Case "富贵闲人" name_count(3) = name_count(3) +1
Case "无事忙" name_count(4) = name_count(4) +1
Case "怡红公子" name_count(5) = name_count(5) +1
Case "文妙真人" name_count(6) = name_count(6) +1
Case "情哥哥" name_count(7) = name_count(7) +1
Case "多情公子" name_count(8) = name_count(8) +1
Case "神瑛侍者" name_count(9) = name_count(9) +1
End Select
Next
MsgBox "贾宝玉出现了" & sum & "次。"&vbCrLf&"详细数据如下:"&vbCrLf&"贾宝玉:"&name_count(0)&vbCrLf&"混世魔王:"&name_count(1)&vbCrLf&"绛洞花王:"&name_count(2)&vbCrLf&"富贵闲人:"&name_count(3)&vbCrLf&"无事忙:"&name_count(4)&vbCrLf&"怡红公子:"&name_count(5)&vbCrLf&"文妙真人:"&name_count(6)&vbCrLf&"情哥哥:"&name_count(7)&vbCrLf&"多情公子:"&name_count(8)&vbCrLf&"神瑛侍者:"&name_count(9)
结果: