VB.Net从字符串函数中提取数字

时间:2012-12-28 04:11:49

标签: vb.net function numbers extract

我的请求可以通过搜索稍微提取一个数字。

实施例: animalsOwned|4将返回包含“4”

的内容

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

这会让我在文件流阅读器中更容易。 谢谢

4 个答案:

答案 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()检查。