搜索文本文件并在文本框中显示文本的一部分
我正在一个VB.net应用程序,我有一个非常大的文本文件。它基本上是一个错误代码的大型数据库,描述了如何清除代码之后的代码。我想要做的是点击一个按钮,在文本文件中搜索特定的代码,并将所有错误代码的文本显示在文本框中。我尝试了许多不同的方式,但无法使其正常工作。我浏览了整个文本文件,并在每个故障代码的开头添加了一个"|"
,以便我可以指定代码的起始位置。搜索文本文件并在文本框中显示文本的一部分
这里是一对夫妇的故障代码的例子:
| ACAL-000无法运行检测Motn原因:AccuCal2运动未能 纳米。 AccuCal2动作无法启动。补救措施:在执行AccuCal2之前清除所有 错误。 | ACAL-001机器人尚未准备就绪。 原因:机器人未准备好。系统无法发出动作 ,因为它处于错误状态。排除方法:清除所有故障,然后重试 该操作。
如果我搜索"ACAL-000"
,我希望它ACAL-001
之前显示一切从|
ACAL-000
前了吧。
我会发布我写的代码,但我已经尝试了很多不同的版本,我不知道要发布哪一个。
任何帮助,你可以提供将不胜感激。
编辑
这里已推荐什么一些编辑和执行后,我当前的代码。请参阅下面的评论,了解我如何达到这一点的更多信息。简要说明,我目前只是使用“| ACAL-000”进行测试搜索。完成后,我还有一些其他(已经工作)的代码,它们将把几个下拉列表中的代码放在一起。
Function ReadEmbeddedTextFileResource(embeddedResourceName As String) As String
Using stream As Stream = Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(embeddedResourceName)
If stream Is Nothing Then
Throw New FileNotFoundException("The resource '" & embeddedResourceName & "' was not found.")
End If
Using reader As StreamReader = New StreamReader(stream, True)
Return reader.ReadToEnd()
End Using
End Using
End Function
Function FindTextBetweenBars(bodyOfTextToSearch As String, textToLookFor As String) As String
Dim i As Integer = bodyOfTextToSearch.IndexOf(textToLookFor)
If i < 0 Then Return Nothing
Dim j As Integer = bodyOfTextToSearch.LastIndexOf("|", i)
If j < 0 Then j = 0
Dim k As Integer = bodyOfTextToSearch.IndexOf("|", i + Len(textToLookFor))
If k < 0 Then k = Len(bodyOfTextToSearch)
Return bodyOfTextToSearch.Substring(j + 1, k - j - 1)
End Function
Private Sub btnShowTroubleshooting_Click(sender As Object, e As EventArgs) Handles btnShowTroubleshooting.Click
Dim allErrorText As String = ReadEmbeddedTextFileResource(My.Resources.FanucCodes)
Dim errorMessage As String = FindTextBetweenBars(allErrorText, "|ACAL-000")
If errorMessage Is Nothing Then errorMessage = "Error code Not found!"
RichTextBoxFanucFaults.Text = errorMessage
End Sub
这是应该做的一个功能,你想要什么:
Function FindTextBetweenBars(bodyOfTextToSearch As String, textToLookFor As String) As String
Dim i As Integer = bodyOfTextToSearch.IndexOf(textToLookFor)
If i < 0 Then Return Nothing
Dim j As Integer = bodyOfTextToSearch.LastIndexOf("|", i)
Dim k As Integer = bodyOfTextToSearch.IndexOf("|", i + Len(textToLookFor))
If k < 0 Then k = Len(bodyOfTextToSearch)
Return bodyOfTextToSearch.Substring(j + 1, k - j - 1)
End Function
在您的按钮单击事件处理程序可以调用该函数是这样的:
Dim errorMessage as String = FindTextBetweenBars(My.Resources.FanucCodes, txtErrorCodeToLookFor.Text)
If errorMessage Is Nothing Then errorMessage = "Error code not found!"
txtErrorMessage.Text = errorMessage
其中txtErrorMessage
是输出文本框以显示错误消息结果, My.Resources.FanucCodes
是包含所有错误说明的大字符串资源(使用|
分隔符)和txtErrorCodeToLookFor
是接受用户输入的错误代码的文本框。
谢谢您的快速回复!我输入了所有的代码,它确实让我更接近,但它显示“错误代码未找到!”每次。我认为这是因为我没有打开我正在正确搜索的文本文件。我将文本文件添加为嵌入式资源,并确保我的项目指向正确的文件。我在文件名“filename.txt”中添加了allErrorText,希望它能够打开并搜索它,因为它是该项目的一部分,但这不起作用。我将如何打开文本文件并在其中搜索? – Kurtis
对不起,我误解了你的问题。上面的代码假设你已经将文件中的文本读入字符串变量。我将在几分钟内编辑以显示如何从文件读取。 –
感谢所有的你的帮助布赖恩! – Kurtis