我的请求可以通过搜索稍微提取一个数字。
实施例:
animalsOwned|4
将返回包含“4”
animals|3|2|1|3
会返回一个包含“3”,“2”,“1”,“3”的数组
这会让我在文件流阅读器中更容易。 谢谢
答案 0 :(得分:2)
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阵列会变得有点复杂。
答案 1 :(得分:1)
尝试正则表达式。它是简单文本解析的强大工具。
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
答案 2 :(得分:0)
我没有编程VB一段时间,但我会给你一些伪代码: 首先,循环遍历每行文件。调用此变量Line。 然后,获取您要搜索的内容的索引:如Line.indexOf(“animalsOwned”) 如果它返回-1则不存在;继续。 找到后,将Index变量添加到搜索字符串的长度和1.(Index = Index + 1 + Len(searchString)) 然后,从那里开始一个子串,并在该行的末尾结束。 通过|爆炸子串字符,然后将每个添加到一个数组中。 返回数组。
很抱歉,我无法给你太多帮助,但我现在正在开发一个重要的PHP网站;)。
答案 3 :(得分:0)
您可以执行variable.Split("|")
然后将每个部分分配到数组级别。
您可以对字符串进行计数,使用while或for循环,可以将拆分的部分分配给数组级别。然后,您可以对每个阵列级别进行IsNumeric()
检查。