Dim strOrig = "192/8' 33/5' 76/24' 17/12'"
Run Code Online (Sandbox Code Playgroud)
大家好,我想在"/"之前获得每个数字.输出将是318.关于如何实现它,我能想到的是:
1.通过查找"间距"作为每个段的终点并将它们放入数组中来拆分所有段.例如(0)192/8,(1)33/5,(2)76/24等......
2.通过循环数组,查找斜杠"/"并获取它之前的数字并将其求和直到循环结束.例如(0)192,(1)33,(2)76等......
我想知道我的方法是否值得付出努力,因为我想学习比这更有效的方法.谢谢大家.
您可以使用LINQ:
Dim strOrig = "192/8' 33/5' 76/24' 17/12'"
Dim numbers = From word In strOrig.Split()
Let number = word.Split("/"c).First().Trim().TryGetInt32()
Where number.HasValue
Select number.Value
Dim sum As Int32 = numbers.Sum() ' 318
Run Code Online (Sandbox Code Playgroud)
我已经使用以下扩展来尝试解析字符串Integer?:
<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
Run Code Online (Sandbox Code Playgroud)