我正在开发一个ASP.NET应用程序,在执行SQL全文搜索查询后,我必须在其中显示文本文档的描述。我必须在该文档的描述中突出显示用户输入搜索字符串。现在的问题是:
如果用户输入 rang 作为输入搜索字符串,那么我必须检查该字符串是否是另一个单词的一部分或显示为单个单词。例如:
1 - rang 可能会单独出现,也可能是某个单词的一部分,即W * rang * ling。
2 - weep 可能会单独出现,也可能是* weep * ing的一部分。
如何验证字符串的这种情况?是否可以通过Regex.Match()
?
任何帮助都感激不尽。
注意:在一个段落中,单个词可能会以多种方式多次出现。
答案 0 :(得分:1)
你可以在正则表达式
中做到这一点string word=Regex.Escape("rang");//your word..used regex.escape to escape regex characters if any
Regex rx = new Regex("\b(.*?)"+word+"(.*?)\b", RegexOptions.IgnoreCase);
foreach (Match m in rx.Matches(yourInputText))
{
if(m.Groups[1]!="" || m.Groups[2]!="")
{
//the word is between some words
}
else
{
//the word occurs separately
}
}
答案 1 :(得分:0)
SELECT * FROM table WHERE Column LIKE "%rang%";
在您的SQL查询中,您可以使用%rang%来匹配任何类似的内容。
如上所述。
答案 2 :(得分:0)
使用LIKE
operator通过SQL查询本身可以做到这一点。
SELECT * FROM <table name> WHERE <column name> LIKE '%rang%'
答案 3 :(得分:0)
要查明字符串中是否有某个单词,只需检查它是否由非单词字符分隔。
例如,如果您将单词定义为仅包含字母,请执行以下操作
bool ContainsWord(string phrase, string word)
{
int i = phrase.IndexOf(word); if (i<0) return false;
return (i==0 || !char.IsLetter(phrase[i-1])) &&
(i==phrase.Length-word.Length || !char.IsLetter(phrase[i+word.Length]));
}