C# 验证另一个字符串之间的字符串?

C# 验证另一个字符串之间的字符串?,c#,regex,string,C#,Regex,String,我正在开发一个ASP.NET应用程序,在执行SQL全文搜索查询后,我必须在其中显示文本文档的描述。我必须在该文档的描述中突出显示用户输入搜索字符串。现在的问题是: 如果用户输入范围作为输入搜索字符串,那么我必须检查该字符串是另一个单词的一部分还是作为单个单词出现。例如: 1-rang可能单独出现,也可能是某个单词的一部分,即W*rang*ling 2-哭泣可能单独出现,也可能是“哭泣”的一部分 如何验证字符串的此类条件?是否可以通过Regex.Match()? 任何帮助都将不胜感激 注意:一个单

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

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

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

2-哭泣可能单独出现,也可能是“哭泣”的一部分

如何验证字符串的此类条件?是否可以通过
Regex.Match()
? 任何帮助都将不胜感激


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

从表格中选择*列,如“%rang%”

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


类似于上面的内容。

可以通过SQL查询本身,使用类似于

从类似“%rang%”的位置选择*

要确定某个内容是否是字符串中的单词,只需检查它是否由非单词字符分隔。
例如,如果您将一个单词定义为只有字母,请执行以下操作

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]));
}
bool(字符串短语、字符串单词)
{

inti=phrase.IndexOf(word);if(i可以在正则表达式中这样做

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
    }
}

@DarthVader:事实上,我必须在文档搜索后执行高亮显示。我想问题是,您希望以与sweep不同的方式高亮显示整个单词,如weep?因此,这与SQL查询无关?您完成搜索了吗?对于语法高亮显示,您可以使用string.Contain。然后使用string.indexOf,然后您可以高亮显示t它。@DarthVader:是否可以使用string.Contain来检查我在某个段落中的条件?一个单词可以在一个段落中以多种方式出现多次。如果它出现多次
rang
在多个单词中出现多次,就这样吧。如果用户正在搜索,你正在做你应该做的事情。我有e以在我的应用程序中验证它。请参阅我的注释。您可以使用string contains。然后用于突出显示string indexof。太复杂了。这真的有必要吗?如果您有一个库调用来简化此过程,只需发布它。这不是必需的答案,它只会返回包含给定文本的行,但不会启用突出显示所有文本给定单词的出现
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
    }
}