2012-11-28 184 views
1

我的應用程序需要輸入字符串和存儲在我的數據庫中的字符串之間的字符串匹配函數。這些字符串涉及產品尺寸(如長度,高度等)。我的目標是檢查輸入的字符串是否已經存在於我的數據庫中,但可能與另一種模式有關,例如:檢查兩個字符串是否包含相同的模式

輸入:「vis 4 * 40」should return如果在我的數據庫中有「vis 4X40」或「vis 4 x 40」或「vis 4 * 40」之類的東西,則爲true。

我找到然而,唯一的辦法是使用正則表達式來代替像模式正常化我DATABSE:

\d+ *[xX*] *\d+ 

有一個標準化(例如NumberXNumber),做相同的輸入字符串然後嘗試找到它。但是,我想知道是否有任何工具已經存在,並允許我這樣做。 (我在C#.NET V4工作)

+0

,如果我得到烏爾問題right..u可以可以測試** **輸入字符串和** **存儲串與上面的'正則表達式'..如果他們匹配,那麼它已經存在 – Anirudha

+0

我應該詳細瞭解更多,但在這種情況下,這不應該匹配「vis 4x40」和「vis 4x60」事件,如果兩個匹配正則表達式 – WizLiz

+0

退房我的答案,我的意思是 – Anirudha

回答

1

只需使用用戶提供的通配符,更換*%和查詢您的表:SELECT col FROM table WHERE col LIKE 'vis 4%40'

確保您使用的參數執行查詢。

+0

這不符合例如「vis 40 * 40」以及「vis 4 * 40」嗎? –

+2

你是對的。我的_real_答案應該是:修復數據庫。 – hometoast

1

一個更好的辦法是串聯這兩個數據,然後配合他們

string target=inputString+"#"+storedString; 

if(Regex.IsMatch(target,"(\d+) *[xX*] *(\d+)#\1 *([xX*]) *\2")) 
     //the string is in the database 
else 
     //it is not 
+0

我不認爲這樣比較好。如果任何字符串包含分隔符「-',會怎麼樣?或者如果他們會,有時在未來呢?這可能是一個令人討厭的錯誤找到。 –

+0

@DavidPärssonsure ..但是這不是隻有正則表達式的情況。即使你以另一種方式做這件事,即使在這種情況下也會有變化 – Anirudha

+0

David提出了一個很好的觀點,我知道正則表達式是一個棘手的工具,我使用我會嘗試你的解決方案,它應該暫時取代我的方法,如果有任何重大問題被報道,我會讓你知道並回到我的第一個想法。無論如何感謝您的答案:D – WizLiz

相關問題