我的要求是可以通过搜索提取一些数字。
示例:
animalsOwned|4
将返回一个包含“4”
animals|3|2|1|3
将返回一个包含“3”、“2”、“1”、“3”的数组
这将使我在文件流阅读器期间更容易。谢谢
Dim astring = "ABCDE|1|2|3|4"
Dim numbers = (From s In astring
Where Char.IsDigit(s)
Select Int32.Parse(s)).ToArray()
这个 LINQ 语句应该会有所帮助。它只是检查字符串中的每个字符以查看它是否是数字。请注意,这仅适用于单个数字。如果您希望“ABC123”返回 123 与 1、2、3 数组,它会变得有点复杂。
试试正则表达式。它是用于简单文本解析的强大工具。
Imports System.Text.RegularExpressions
Namespace Demo
Class Program
Shared Function Main(ByVal args As String()) As Integer
Dim array As Integer() = ExtractIntegers("animals|3|2|1|3")
For Each i In array
Console.WriteLine(i)
Next
Return 0
End Function
Shared Function ExtractIntegers(ByVal input As String) As Integer()
Dim pattern As String = "animals(\|(?<number>[0-9]+))*"
Dim match As Match = Regex.Match(input, pattern)
Dim list As New List(Of Integer)
If match.Success Then
For Each capture As Capture In match.Groups("number").Captures
list.Add(Integer.Parse(capture.Value))
Next
End If
Return list.ToArray()
End Function
End Class
End Namespace
我有一段时间没有编写 VB,但我会给你一些伪代码:首先,循环遍历文件的每一行。将此变量称为 Line。然后,获取您正在搜索的内容的索引:例如 Line.indexOf("animalsOwned") 如果它返回 -1 它不存在;继续。找到它后,将 Index 变量添加到搜索字符串的长度和 1。 (Index=Index+1+Len(searchString)) 然后,从那里获取一个子字符串,并在行尾结束。通过 | 展开子字符串 字符,然后将每个字符添加到数组中。返回数组。
对不起,我不能给你太多帮助,但我现在正在开发一个重要的 PHP 网站;)。
您可以执行 avariable.Split("|")
然后将每个部分分配给数组级别。
您可以对字符串进行计数,并使用 while 或 for 循环,您可以将拆分的部分分配给数组级别。然后您可以IsNumeric()
检查每个数组级别。