3

SQL全文検索クエリを実行した後にテキストドキュメントの説明を表示する必要があるASP.NETアプリケーションを開発しています。そのドキュメントの説明で、ユーザー入力の検索文字列を強調表示する必要があります。今問題はそれです:

ユーザーが入力検索文字列としてrangと入力した場合、その文字列が別の単語の一部であるか、個別の単語として表示されるかを確認する必要があります。例えば:

1- rangは単独で表示される場合もあれば、W * rang *lingなどの単語の一部である場合もあります。

2-ウィープはそれ自体で表示される場合もあれば、*ウィープ*ingの一部である場合もあります。

文字列のそのような条件をどのように検証できますか?それは可能Regex.Match()ですか?どんな助けでも大歓迎です。

:1つの単語が、段落内で複数の方法で複数回表示される場合があります。

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

文字列内の単語であるかどうかを確認するには、単語以外の文字で区切られているかどうかを確認します。
たとえば、単語を文字のみであると定義する場合は、次のようにします。

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 に答える
0

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

SQLクエリでは、 %rang% を使用できます。これは、のようなものに一致します。

上記のようなもの。

于 2012-10-23T05:50:20.297 に答える
0

LIKE operatorを使用して、SQL クエリ自体でそれを行うことができます。

SELECT * FROM <table name> WHERE <column name> LIKE '%rang%'
于 2012-10-23T05:50:55.347 に答える