Vb.net 字符串中的和数

Vb.net 字符串中的和数,vb.net,Vb.net,大家好,我想获得/之前的每个数字。输出为318。 关于如何实现这一目标,我能想到的是: 1.通过寻找“间距”作为每个线段的端点来拆分所有线段,并将其放入数组中。例如0192/8、133/5、276/24等 2.通过循环数组,查找斜杠/并获取其前面的数字,然后求和,直到循环结束。例如0192、133、276等 我想知道我的方法是否值得努力,因为我想学习比这更有效的方法。谢谢大家。您可以使用LINQ: Dim strOrig = "192/8' 33/5' 76/24' 17/12'" 我已使用以

大家好,我想获得/之前的每个数字。输出为318。 关于如何实现这一目标,我能想到的是:

1.通过寻找“间距”作为每个线段的端点来拆分所有线段,并将其放入数组中。例如0192/8、133/5、276/24等

2.通过循环数组,查找斜杠/并获取其前面的数字,然后求和,直到循环结束。例如0192、133、276等

我想知道我的方法是否值得努力,因为我想学习比这更有效的方法。谢谢大家。

您可以使用LINQ:

Dim strOrig = "192/8' 33/5' 76/24' 17/12'"
我已使用以下扩展名尝试将字符串解析为整数?:


我能想到的最简单的

<Extension()>
Public Function TryGetInt32(Str As String) As Nullable(Of Int32)
    If Str Is Nothing Then Return Nothing
    Dim num As Int32
    If Int32.TryParse(Str, num) Then Return num
    Return Nothing
End Function
营救:

    Dim lst As List(Of String) = strOrig.Split("/").ToList

    lst.RemoveAt(lst.Count - 1)
    lst.Sum(Function(x) Convert.ToUInt16(x))

这总是那个格式吗?e、 g.number/numberI会说它是number/string,因为后面只有一个引号。不要忘记其中的VB.NET行继续下划线LINQ@valverij:VS 2010不需要选择Int32而不是Integer有什么特殊原因吗?真的吗?这是VS2010版还是.NET4.5版?我肯定记得我在家里需要它2010@valverij:我从2011年开始使用VS2010,不,你不再需要它了。我更喜欢Int32而不是Integer,因为它更短,而且Int32更清晰,因为还有Int16和Int64以及UInt变体。
    Dim lst As List(Of String) = strOrig.Split("/").ToList

    lst.RemoveAt(lst.Count - 1)
    lst.Sum(Function(x) Convert.ToUInt16(x))
    Dim strOrig As String = "192/8' 33/5' 76/24' 17/12'"

    Dim sum as Integer = (From m As Match In Regex.Matches(strOrig, "(?<number>\d+?)/")
                          Select Convert.ToInt32(m.Groups("number").Value)
                         ).Sum()