2013-02-11 79 views
1

我想生成字符串的条件代码,它将检查字符串。一个例子是下面的字符串 sampleString = “C123 A091 A111 A122 B120 B309 C000” 和有条件串的实施例I具有如下从字符串生成条件代码

例1: A123 + B123将我生成作为

if sampleString.contains ("A123") And sampleString.contains ("B123") Then 
'doSomething 
else 
'doSomething 
end if 

例2: A111 + A122 +(B120/-C123)

if sampleString.contains ("A111") And sampleString.contains ("A122") And (sampleString.contains ("B120") Or Not sampleString.contains ("C123")) Then 
'doSomething 
else 
'doSomething 
end if 
  • 加号(+)的手段和
  • 减号( - )是指不
  • 斜杠(/)方式或

我能在VB.Net这样做吗?

+2

你为什么要用这个令人困惑的语法?如果有的话,使用更有意义的东西,比如'&','!'和'|'。 – svick 2013-02-11 02:56:19

+0

@svick我的问题是如何将字符串转换为VB.NET中的条件语法,就像我之前写的那样。 – danangaji 2013-02-11 03:04:21

+1

如果你有这个代码,你会怎么做? – 2013-02-11 03:26:07

回答

0

使用Regex通过寻找比赛解决Contains问题,并用1或0

Dim sample As String = "C123 A091 A111 A122 B120 B309 C000" 
Dim input As String = "A111 + A122 + (B120/- C123)" 

Dim nRegex As New Regex("\w+", RegexOptions.IgnoreCase) 
Dim nMatches As MatchCollection = nRegex.Matches(input) 

For Each nMatch As Match In nMatches 

    input = input.Replace(nMatch.Value, IIf(sample.Contains(nMatch.Value), "1", "0")) 

Next 

现在替换它们时,作为评价替代的特殊字符,你有那些实际上可以给你正确的结果一个数学表达式(因为逻辑本来是数学)。

input = input.Replace(" ", "") 
input = input.Replace("+", "*") 
input = input.Replace("/", "+") 
input = input.Replace("-1", "0").Replace("-0", "1") 

这一切后,你会得到这样的表达:

1*1*(1+0) 

您现在可以使用任何数学评估在本Answer建议。如果得到的结果大于零意味着其逻辑上为True。否则False

+0

如果我得到像 ' - (0 * 0 * 0)+ - (0 + 0)'这样的数学表达式,我会得到这个错误。如果我们使用数学求值器,它会给出结果为'0'(假)。 – danangaji 2013-06-07 02:39:12