2013-02-11 78 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