.net 基于包含语句的字符串构造VB代码
我要做的是在.NET中为下面的例子编写一个简单的解析器 给定如下字符串:.net 基于包含语句的字符串构造VB代码,.net,regex,vb.net,string,expression,.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 Els
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
应该返回这样一个:
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将字符串分成多个字符串,首先是“;”然后是“:”,通过对每个使用,我成功地做到了这一点(尽管不是以非常优雅的方式)
这就是为什么我想知道是否有一种更精细的方法来实现这一点,也许使用正则表达式
最后一件事,你认为有没有一种快速的方法可以让所有的数字都用方括号括起来(变量ID),而不需要重复
例如,给定如下字符串:
If ([3] = ‘M’ AND [4] = ‘S’ AND [5]>=1000 : 20/100 * [5]; 500)
我得到一个包含(3,4,5)的整数数组
在.NET中实现这些功能的最佳方法是什么??
任何帮助都将不胜感激
另外,我找不到一个好的问题标题。我知道这已经很晚了,但为了记录在案,您可以使用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))