2013-08-31 54 views
2

我试图做到这一点是写一个简单的解析器在.NET 下列情况下给出的字符串是这样的:构建VB代码

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)中而不重复。

例如,给定一个字符串,如:

我得到的,比方说,含(3,4,5)

整数数组什么是实施这种事的最好办法。净?? 任何帮助将不胜感激

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

+0

任何想法? :'( – eddy

回答

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))