2011-11-21 63 views
-3

我需要通過一個文本文件,並檢查每行的開始是否以「屬性」開頭。我應該如何在VB6中做到這一點?使用VB6,如何檢查子字符串是否在另一個字符串的開頭?

+2

作爲兩個你的[其他]的(http://stackoverflow.com/questions/8206848/how-to-remove-all-code-from-multiple-vb6-frm-files再次同 - 和 - 離開形式設計)[問題](http://stackoverflow.com/questions/8208131/pattern-match-processing-of-multiple-frm-files)。如果您想擴大並澄清問題,請展開它,而不是開始一個完整的新問題和答案主題。 – Deanna

回答

0
Dim fso As New FileSystemObject 
Dim ts As TextStream 
Dim str As String 

Set ts = fso.OpenTextFile(MyFile) 
Do While Not ts.AtEndOfStream 
    str = ts.ReadLine 
    If InStr(str, "Attribute") = 1 Then 
     ' do stuff 
    End If 
Loop 
1
Dim sInput As String, check as Boolean 
check = true 
Open "myfile" For INPUT As #txtFile 
While Not EOF(txtFile) 
    Input #txtFile, sInput 
    If Not Mid(sInput,1,9) = "ATTRIBUTE" Then 
     check = false 
    End if 
    sInput = "" 
Wend 
Close #txtFile 

如果check = true在最後,所有行以「ATTRIBUTE」開頭,否則它們不會。一旦如果AllLinesStartWithAttribute值設置爲true,那麼在你的文件中的所有行以「屬性」開頭的代碼運行

Dim ParseDate, AllLinesStartWithAttribute, fso, fs 
AllLinesStartWithAttribute = False 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set fs = fso.OpenTextFile("c:\yourfile", 1, True) 
Do Until fs.AtEndOfStream 
    If Left(fs.ReadLine, 9) <> "Attribute" Then 
     AllLinesStartWithAttribute = False 
     Exit Do 
    End If 
Loop 
fs.Close 
Set fs = Nothing 

-

+1

您需要一個'UCase()'''round'Mid(sInput,1,9)'來使其工作 –

1

你可以嘗試這樣的事情(未測試的代碼)。請注意,此代碼區分大小寫。

+0

您可以在類/模塊開始處使用'Option Compare Text'來使其不區分大小寫。然後你可以使用運算符像「屬性*」 - 使代碼更具可讀性。當你發現某些行無效時,你可以儘早終止循環:) – Arvo

+2

當'Option Explcit'打開時,不會編譯不會編譯的代碼,這是不推薦的或好的做法。 –

+0

@Matt - 公平點,代碼現在已經被整理了,加上會用'Option Explicit'編譯上。 – ipr101

2

使用正則表達式。您將不得不在引用中包含VBScript正則表達式庫。

Dim reg As new Scripting.Regex(). 
reg.Pattern = "^Attribute" 
If reg.Match(line) Then 
    ' Do Something 
End If 
相關問題