VB.NET閱讀某些文字我想我的程序讀取文本文件中的某些文本。例如,如果我有一個包含以下信息的文本文件..在一個文本文件
acc=blah
pass=hello
我希望我的vb.net應用程序來獲得該帳戶變量等於胡說,和密碼變量等於你好。
誰能告訴我如何做到這一點?
感謝
VB.NET閱讀某些文字我想我的程序讀取文本文件中的某些文本。例如,如果我有一個包含以下信息的文本文件..在一個文本文件
acc=blah
pass=hello
我希望我的vb.net應用程序來獲得該帳戶變量等於胡說,和密碼變量等於你好。
誰能告訴我如何做到這一點?
感謝
這裏的代碼,你點擊一個按鈕,就會在那之後,快速點點:
這裏是代碼:
Imports System.IO
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strFile As String = "Test.INI"
Dim sr As New StreamReader(strFile)
Dim InputString As String
While sr.Peek <> -1
InputString = sr.ReadLine()
checkIfContains(InputString)
InputString = String.Empty
End While
sr.Close()
End Sub
Private Sub checkIfContains(ByVal inputString As String)
Dim outputFile As String = "testOutput.txt"
Dim m As Match
Dim m2 As Match
Dim itemPattern As String = "acc=(\S+)"
Dim itemPattern2 As String = "pass=(\S+)"
m = Regex.Match(inputString, itemPattern, _
RegexOptions.IgnoreCase Or RegexOptions.Compiled)
m2 = Regex.Match(inputString, itemPattern2, _
RegexOptions.IgnoreCase Or RegexOptions.Compiled)
Do While m.Success
Console.WriteLine("Found account {0}", _
m.Groups(1), m.Groups(1).Index)
m = m.NextMatch()
Loop
Do While m2.Success
Console.WriteLine("Found password {0}", _
m2.Groups(1), m2.Groups(1).Index)
m2 = m2.NextMatch()
Loop
End Sub
End Class
看一看這篇文章
Reading and writing text files with VB.NET
威樂逐行讀取文件中的行,你可以使用String.Split Method與分流是「=」,分割字符串到PARAM名和參數值的方式。
你真的不能選擇性地讀取信息的某一位專門的文件中。您必須掃描文件的每一行,並在行首搜索字符串「pass =」。我不知道VB,但查找這些主題:
我的建議是:使用XML。 .NET框架有很多很好的XML工具,如果你願意把所有的文本文件轉換成XML,它會讓生活變得更容易。
不是你要找的東西,可能是,但它比任何你可以用純文本(在開發你自己的解析器或使用低級別的API之外)可以做的任何事情都更清潔。
看起來你已經有了某種類型的INI文件...閱讀這些文件的最好方法是使用Windows API的PrivateProfile函數,這意味着你可以很容易地擁有一個合適的完整INI文件爲你需要的任何東西。您可能會喜歡使用包裝類here。
Microsoft建議您使用註冊表來存儲此類信息,但不鼓勵使用INI文件。
如果您希望只使用您使用的語法手動創建文件,那麼將字符串拆分爲'='並將結果放入字典中是一種簡單的情況。請記住處理在文件中找不到數據的情況,並且您需要默認/錯誤。然而,在現代,XML在數據文本文件中變得越來越流行,並且有很多庫可以處理來自這些文件的加載。
你有沒有想過讓框架來處理它,而不是
如果一個條目添加到與名稱ACC,字符串類型,範圍的用戶(或應用程序,這取決於需求)和值傳遞項目屬性的設置選項卡中,你可以使用System.Configuration.ApplicationSettingsBase功能來對付它。在任何你需要的負載事件
Private _settings As My.MySettings
Private _acc as String
Private _pass as String
Public ReadOnly Property Settings() As System.Configuration.ApplicationSettingsBase
Get
If _settings Is Nothing Then
_settings = New My.MySettings
End If
Return _settings
End Get
End Property
Private Sub SetSettings()
Settings.SettingsKey = Me.Name
Dim theSettings As My.MySettings
theSettings = DirectCast(Settings, My.MySettings)
theSettings.acc=_acc
theSettings.pass=_pass
Settings.Save()
End Sub
Private Sub GetSettings()
Settings.SettingsKey = Me.Name
Dim theSettings As My.MySettings
theSettings = DirectCast(Settings, My.MySettings)
_acc=theSettings.acc
_pass=theSettings.pass
End Sub
呼叫的getSettings,並SetSettings在關閉事件
這將創建在application.exe.config文件中的條目,無論是在本地設置\ APPS \ 2.0 \等etc目錄,或您的漫遊一個,或者如果它是一個ClickOnce部署,在ClickOnce的數據目錄。這將如下所示: -
<userSettings>
<MyTestApp.My.MySettings>
<setting name="acc" serializeAs="String">
<value>blah</value>
</setting>
<setting name="pass" serializeAs="String">
<value>hello</value>
</setting>
</MyTestApp.My.MySettings>
</userSettings>
編寫自己的解析器並不難。我設法爲遊戲製作一個遊戲(使用C#,但VB似乎也有Regex
類。使用這個,你的文件中的acc
變量將是所有符號,直到=
符號,然後blah
將會是所有符合=
換行符(\n
)然後轉到下一行並重復執行
此代碼用於繪製文本文件中要求的參數Downvoting有效指出解決方案中的問題,但反饋應以以及以精巧爲他人閱讀張貼的答案以及回答者的利益。 – Dostee 2009-12-14 15:47:51
你有這個源代碼嗎? – lab12 2009-12-24 02:30:29
NVM。關於源代碼..我得到它的工作。我只是有一個問題。我怎樣才能保存m.groups(1)....中的數據程序將數據寫入變量? – lab12 2009-12-24 03:02:50