-2

嗨,我是 VB 的新手,尽管如果有人可以在我目前的情况下帮助我

我有一个名为 shar.txt 的文本文件
,其中有 6 行。

我是新学生
我正在学习VB
请帮助我 朋友
们在我们的生活中永远很重要
谢谢你的支持
永远感谢你

我想要一个脚本来读取这个文本文件并查找诸如“Friends”、“support”之类的字符串,并在同一位置的另一个文本文件中打印包含这些字符串的行,比如“sha.txt”

我一直尝试到这一点,但在中途迷路了。

请有人帮助我。
谢谢

Sub ReadToTextFile()
Dim strPattern1 As String    
Dim strPattern2 As String    
H1 As String    
H2 As String    
strPattern1 = "friends"    
strPattern2 = "support"    


Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Users\sonu\Desktop\auto\shar.txt", 1, True)    
Do Until
 objFileToRead.AtEndOfStream        
    strLine = objFileToRead.ReadLine        
    ElseIf 
InStr(strLine, strPattern1) > 0    
 Then        
        Wscript.Echo strLine    
                H1 = strLine    
                ElseIf 
InStr(strLine, strPattern2) > 0        
 Then        
                Wscript.Echo strLine    
                H2 = strLine    
           End If    

    End If    
Loop    

Wscript.Echo H2    

Set objFileToRead = Nothing    

End Sub    
4

1 回答 1

5

这个网站的一个非常糟糕的问题。花一些时间阅读规则对您有好处。

无论如何,这是我的。

Const ForReading = 1, ForWriting = 2
Dim FSO, FileIn, FileOut, strTmp

Set FSO     = CreateObject("Scripting.FileSystemObject")
Set FileIn  = FSO.OpenTextFile("shar.txt", ForReading)
Set FileOut = FSO.OpenTextFile("sha.txt", ForWriting, True)

Do Until FileIn.AtEndOfStream
    strTmp = FileIn.ReadLine
    If Len(strTmp) > 0 Then
        If InStr(1, strTmp, "Friends", vbTextCompare) > 0 _
        Or InStr(1, strTmp, "support", vbTextCompare) > 0 Then
            FileOut.WriteLine strTmp
        End If
    End If
Loop

FileIn.Close
FileOut.Close

编辑:关于您使用数组的问题...

' an example array
arWords = Array("friends", "support", "xyz")
' modified Do..Loop
Do Until FileIn.AtEndOfStream
    strTmp = FileIn.ReadLine
    If Len(strTmp) > 0 Then
        For i = 0 To UBound(arWords)
            If InStr(1, strTmp, arWords(i), vbTextCompare) > 0 Then
                FileOut.WriteLine strTmp
                Exit For
            End If
        Next
    End If
Loop

干杯!

于 2013-06-24T12:32:42.153 回答