基于包含语句的字符串构造VB代码

时间:2013-08-31 12:55:19

标签: .net regex vb.net string expression

我正在尝试这样做是为.NET中的以下案例编写一个简单的解析器 给出这样的字符串:

If  ([1] >=60 :  50; If ([1]>=50 :  40; If ([1]>=40 : 30; If([1]>=30 : 20;0))))

应该返回一个这样的:

If  ([1] >=60) Then 
    Return 50
ElseIf ([1]>=50) Then
    Return 40
ElseIf ([1]>=40 ) Then
    Return 30
ElseIf([1]>=30 ) Then
    Return 20
Else
    Return 0
End If

使用split将字符串首先划分为多个字符串“;”然后通过“:”并使用For Each,我设法做到了(虽然不是很优雅) 这就是为什么我想知道是否会有更复杂的方法来做这个,使用正则表达式

最后一件事,您是否认为有一种快速方式可以将所有数字括在方括号(变量ID)中而不会重复。

例如,给出一个像:

这样的字符串
   If ([3] = ‘M’ AND [4] = ‘S’ AND [5]>=1000 : 20/100 * [5]; 500)

我得到一个包含(3,4,5)

的整数数组

在.NET中实现此类功能的最佳方法是什么? 任何帮助将不胜感激

P.S。我找不到这个问题的好标题。

1 个答案:

答案 0 :(得分:0)

我知道这已经很晚了,但只是为了记录,您可以使用Regex轻松实现此类捕获:

Dim input As String = "If ([3] = ‘M’ AND [40] = ‘S’ AND [5]>=1000 : 20/100 * [5]; 500)"
Dim r As Regex = New Regex("\[(\d+)\]")
Dim list As List(Of String) = New List(Of String)
For Each match As Match In r.Matches(input)
    If Not list.Contains(match.Groups(1).Value) Then
        list.Add(match.Groups(1).Value)
    End If
Next

Console.WriteLine("({0})", String.Join(",", list))