【问题标题】:Reading multiple integers on a line to a listbox将一行上的多个整数读取到列表框
【发布时间】:2015-04-27 15:32:37
【问题描述】:

我正在尝试读取列表框行中的所有整数。

Dim scores As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(line, "\d+")

我已经以这样的格式保存了分数

姓名 00 00 00

我可以有一个正则表达式来读取 3 个整数,每个数字之间有一个空格吗?存储整数的文件是记事本文件。

【问题讨论】:

  • @Alexander 是的,它是一个文本文件。但我必须用它来完成我的任务。
  • 这个正则表达式可以满足您的需要,我很确定 Regex.IsMatch(Line, "^\d{2}\s{1}\d{2}\s{1}\ d{2}$") 您现在可以根据需要为其赋予功能。
  • @Timmy 这个表达式只读取该行的第一个整数我希望它读取所有的整数
  • @user4838397 我刚刚快速测试了我给你的表达式,如果表达式匹配,scores.ToString 返回了我输入的内容。也许我不是 100% 清楚你的要求. Regex.IsMatch 还将测试给定的行是否与正则表达式匹配,因此它是一个布尔值,将返回 TrueFalse。我不确定这是否有帮助,如果没有,我不清楚你想要什么。

标签: vb.net visual-studio-2010 visual-studio visual-studio-2012


【解决方案1】:

没有正则表达式的方法:

Const SEPARATOR As String = " "c
Dim line As String 'Here reading line from the file
Dim numbers As New List(Of Int32)()
Dim values As String() = line.Split(SEPARATOR) 'Split values to array
For Each value As String in values
    Dim tempnumber As Int32
    If Int32.TryParse(value, tempnumber) = True Then
        'Accept only numbers
        numbers.Add(tempnumber)
    End If
Next

【讨论】:

    【解决方案2】:

    使用Matches 代替Match 并将Regex 的结果存储到MatchCollection

    Sub Main()
        Dim scores As String = "00 13 00"
        Dim score As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(scores, "\d+")
    
        For i As Integer = 0 To score.Count - 1
            Console.WriteLine(score.Item(i))
        Next
    
        Console.ReadLine()
    End Sub
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      • 2021-10-18
      相关资源
      最近更新 更多