1

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

示例 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
  • 加号 (+) 表示 AND
  • 减号 (-) 表示不
  • 斜线 (/) 表示或

我可以在 VB.Net 中做到这一点吗?

4

1 回答 1

0

用于通过查找匹配项并将其替换为 1 或 0Regex来解决问题。Contains

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)

您现在可以使用此答案中建议的任何数学评估器。如果你得到的结果大于零意味着它的逻辑True。否则False

于 2013-02-11T13:00:27.693 回答