0

我的要求是可以通过搜索提取一些数字。

示例: animalsOwned|4将返回一个包含“4”

animals|3|2|1|3将返回一个包含“3”、“2”、“1”、“3”的数组

这将使我在文件流阅读器期间更容易。谢谢

4

4 回答 4

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 数组,它会变得有点复杂。

于 2012-12-28T04:16:55.513 回答
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
于 2012-12-28T04:38:40.837 回答
0

我有一段时间没有编写 VB,但我会给你一些伪代码:首先,循环遍历文件的每一行。将此变量称为 Line。然后,获取您正在搜索的内容的索引:例如 Line.indexOf("animalsOwned") 如果它返回 -1 它不存在;继续。找到它后,将 Index 变量添加到搜索字符串的长度和 1。 (Index=Index+1+Len(searchString)) 然后,从那里获取一个子字符串,并在行尾结束。通过 | 展开子字符串 字符,然后将每个字符添加到数组中。返回数组。

对不起,我不能给你太多帮助,但我现在正在开发一个重要的 PHP 网站;)。

于 2012-12-28T04:22:51.627 回答
0

您可以执行 avariable.Split("|")然后将每个部分分配给数组级别。

您可以对字符串进行计数,并使用 while 或 for 循环,您可以将拆分的部分分配给数组级别。然后您可以IsNumeric()检查每个数组级别。

于 2012-12-28T04:38:51.310 回答