2012-11-28 191 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

相关问题