3

我正在开发一个 ASP.NET 应用程序,在执行 SQL 全文搜索查询后,我必须在其中显示文本文档的描述。我必须在该文档的描述中突出显示用户输入搜索字符串。现在的问题是:

如果用户输入rang作为输入搜索字符串,那么我必须检查该字符串是另一个单词的一部分还是作为单个单词出现。例如:

1 - rang可能单独出现,也可能是某个单词的一部分,即 W* rang *ling。

2 -哭泣可能单独出现,也可能是 * weep *ing 的一部分。

如何验证字符串的这种条件?有可能通过Regex.Match()吗?任何帮助都感激不尽。

注意:一个单词可能在一个段落中以多种方式出现多次。

4

4 回答 4

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
    }
}
于 2012-10-23T07:49:49.390 回答
0

SELECT * FROM table WHERE Column LIKE "%rang%";

在您的 sql 查询中,您可以使用 %rang% 匹配任何类似的内容。

类似上面的东西。

于 2012-10-23T05:50:20.297 回答
0

LIKE 可以通过使用运算符的 SQL 查询本身来做到这一点。

SELECT * FROM <table name> WHERE <column name> LIKE '%rang%'
于 2012-10-23T05:50:55.347 回答
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]));
}
于 2012-10-23T05:58:20.600 回答