Vb.net 在VB中有选择地读取、存储文本

Vb.net 在VB中有选择地读取、存储文本,vb.net,visual-studio-2013,full-text-search,streamreader,Vb.net,Visual Studio 2013,Full Text Search,Streamreader,我有一个EDI格式的长单行文本文件,我需要找到一种方法来读取和存储文件的某一部分。在整个文件中,有几个“[Undersible TEXT]CLM*[NUMBER]*[Undersible TEXT]”实例,我需要能够获取[NUMBER]部分,并将其存储并显示在某处。我已经能够使用Streamreader读取整个文件并显示它,但我不知道如何将其缩小到我想要的部分。有什么建议吗 我现在在VB.NET中工作,但如果它提供了一种更简单的方法,我愿意使用另一种语言 感谢您提供的帮助。您可以使用正则表达式识

我有一个EDI格式的长单行文本文件,我需要找到一种方法来读取和存储文件的某一部分。在整个文件中,有几个“[Undersible TEXT]CLM*[NUMBER]*[Undersible TEXT]”实例,我需要能够获取[NUMBER]部分,并将其存储并显示在某处。我已经能够使用Streamreader读取整个文件并显示它,但我不知道如何将其缩小到我想要的部分。有什么建议吗

我现在在VB.NET中工作,但如果它提供了一种更简单的方法,我愿意使用另一种语言


感谢您提供的帮助。

您可以使用正则表达式识别模式,并通过
Regex
Match
类的
System.Text.RegularExpressions
找到所需的值。像这样的事情应该让你开始:

Imports System.Text.RegularExpressions
Public Function getCLM(ediString as string) as string

    Dim regex As New Regex("CLM\*(\d*\.?\d*)")
    Dim match As Match = regex.Match(yourString)
    If match.Success Then Return match.Value
End Function

Dim yourString as String = ""
Dim clmNumber as string = getCLM(yourString)
在这种情况下,您必须将EDI字符串加载到字符串中。你可以看到我放在这里的正则表达式是如何通过使用


这是假设您的字符串只有一个匹配的模式。

谢谢,这非常有用!如果我想找到多个匹配项(例如,我想找到并显示4-5行“CLM*[NUMBER]”,我会如何处理它?我已经对代码进行了修改,但似乎无法找到一种方法使其查找/显示所有匹配项而不是第一个匹配项。我想我需要修改“if match.Success然后返回match.Value”逻辑,对吗?如果最终解决了您的问题,请确保将响应标记为答案!欢迎使用堆栈!