VB.NET读取文本文件中的某些文本
我想让我的程序读取文本文件中的某些文本。例如,如果我有一个包含以下信息的文本文件VB.NET读取文本文件中的某些文本,vb.net,visual-studio-2008,file,text,Vb.net,Visual Studio 2008,File,Text,我想让我的程序读取文本文件中的某些文本。例如,如果我有一个包含以下信息的文本文件 acc=blah pass=hello 我希望我的vb.net应用程序得到account变量等于blah,password变量等于hello 谁能告诉我怎么做 谢谢看看这篇文章 在逐行读取文件时,您可以使用拆分器“=”,将字符串拆分为参数名称和参数值。您不能真正有选择性地以独占方式读取文件中的特定信息。您必须扫描文件的每一行,并搜索该行开头的字符串“pass=”。我不知道VB,但可以查找以下主题: 文件阅读器(
acc=blah
pass=hello
我希望我的vb.net应用程序得到account变量等于blah,password变量等于hello
谁能告诉我怎么做
谢谢看看这篇文章
在逐行读取文件时,您可以使用拆分器“=”,将字符串拆分为参数名称和参数值。您不能真正有选择性地以独占方式读取文件中的特定信息。您必须扫描文件的每一行,并搜索该行开头的字符串“pass=”。我不知道VB,但可以查找以下主题:
我的建议是:使用XML。NET framework有很多很好的XML工具,如果您愿意转换为将所有文本文件转换为XML,这将使您的生活更加轻松
可能不是您想要的,但它是一个比纯文本更干净的解决方案(除了开发您自己的解析器或使用较低级别的API)。看起来您有某种INI文件。。。读取这些文件的最佳方法是使用windows API的*PrivateProfile*函数,这意味着您可以很容易地为您需要的任何内容创建一个适当的完整INI文件。您可能喜欢使用一个包装器类 不过,Microsoft建议您使用注册表来存储此类信息,并且不鼓励使用INI文件
如果您希望仅使用您已有的语法手动使用文件,则只需在“=”上拆分字符串并将结果放入字典中即可。请记住,如果在文件中找不到数据,则需要处理默认/错误。然而,在现代,XML在数据文本文件中变得越来越流行,有很多库需要处理从这些文件中加载的问题。下面是一段简短的代码,单击按钮后,它将:
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
Imports System.IO
导入System.Text.RegularExpressions
公开课表格1
私有子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击
将strFile设置为String=“Test.INI”
Dim sr作为新的StreamReader(strFile)
将输入字符串设置为字符串
而老皮克-1
InputString=sr.ReadLine()
checkIfContains(InputString)
InputString=String.Empty
结束时
高级关闭()
端接头
私有子checkIfContains(ByVal inputString作为字符串)
Dim outputFile为String=“testOutput.txt”
把我当作对手
将m2调暗为匹配
Dim itemPattern为String=“acc=(\S+)”
将itemPattern2设置为String=“pass=(\S+)”
m=Regex.Match(inputString,itemPattern_
RegexOptions.IgnoreCase或RegexOptions.Compiled)
m2=Regex.Match(inputString,itemPattern2_
RegexOptions.IgnoreCase或RegexOptions.Compiled)
当m.成功的时候做什么
Console.WriteLine(“找到的帐户{0}”)_
m、 组(1),m.组(1.索引)
m=m.NextMatch()
环
做一个成功的人
Console.WriteLine(“找到密码{0}”)_
m2.组(1),m2.组(1.指数)
m2=m2.NextMatch()
环
端接头
末级
您是否考虑过让框架来处理它
如果在项目属性的“设置”选项卡中添加名为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
)之后的所有内容然后转到下一行并重复。此代码用于从文本文件中提取所需的参数。向下投票可以有效地指出解决方案中的问题。但也应该给出反馈,以便其他人阅读张贴的答案以及有关源代码的answerer.Nvm。我得到了我只有一个问题。我如何将程序写入的m.groups(1)中的数据保存到变量中?用一个holder替换console.writeline,例如,您可以使用字符串数组-类似于:myArray(I)=“找到密码{0}”&m2.groups(1)&m2.groups(1).IndexHere是一个确切的错误:没有为类型“String”和“System.Text.RegularExpressions.Group”定义运算符“&”。组“Man-你需要去享受圣诞节!哈哈-我们使用“+”(加号)运算符而不是“&”。如果由于某种奇怪的原因无法工作,你也可以使用String.concat()函数。比如,myArray=String.concat(m2.groups(1),m2.gro