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を意味します
  • マイナス(-)はNOTを意味します
  • スラッシュ(/)はORを意味します

VB.Netでこれを行うことはできますか?

4

1 に答える 1

0

一致するものを見つけて1または0に置き換えることにより、問題Regexを解決するために使用します。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 に答える