6

ラベル内の文の単語を参照する方法を知りたいです。たとえば、私は次のようにしています。

label1.text = "books pencil pen ruler";

「 label1.textに「pen」という単語が含まれている場合は、何かを実行してください」

if (label1.text CONTAINS THE WORD "pen")
{
    // do something
}

どうすればよいですか?

4

6 に答える 6

13

正規表現の単語境界を使用します。

if (Regex.IsMatch(label1.text, @"\bpen\b"))
    // do something

IndexOfやSplitingをチェックするよりもはるかに堅牢です。たとえば、単純なものIndexOf("pen")は一致し"open"ます。IndexOf(" pen ")一致しないようにすることでそれを修正しようとしてい"pen other words"ます。または、の場合Split(' ')、で一致しません"This sentence ends in pen."。正規表現の単語の境界は、予想どおり、これらすべてに一致します。より多くの単語境界文字に分割することもできますが、単語境界を自分で理解しようとするよりも、正規表現クラスの作成者に作業を任せる方がはるかに簡単です。

于 2012-07-04T04:29:48.903 に答える
2

string.Split()を使用してそのテキストをトークンに分割し、Array.Containsを使用して単語がリストに含まれているかどうかを確認できます。

string sentence = "books pencil pen ruler";
string[] words = sentence.Split(' ');
bool hasFox = words.Contains("pen");

スペース(タブなど)だけでなく、より多くの区切り文字を使用できるようにする場合は、分割を使用するときに区切り文字を追加できます。一致の大文字と小文字の区別が気になる場合は、IEqualityComparerを使用するContainsのオーバーロードを使用できます。

于 2012-07-04T04:27:32.297 に答える
0

ペンの単語が単語の間にあり、文字列の最初または最後ではないと予想される場合。

if(label1.text.IndexOf(" pen ") != -1 )
{
//do something
}

編集

話し合った結果、正規表現がより良い選択肢であることがわかりました。

if (Regex.IsMatch(label1.Text, @"\bpen\b"))
{
 //do something
}
于 2012-07-04T04:27:50.103 に答える
0

試す -

if(label1.text.contains(" pen ")) 
     {
         //do something 
     }

前後にスペースを追加するだけpenです。

于 2012-07-04T04:28:48.013 に答える
0
string s1 = "books pencil pen ruler";
string s2 = "pen";
if(s1.Contains(s2) && s2 != "")
{
// do something
}
于 2012-07-04T04:30:15.233 に答える
0

これは役立つはずです

string data = label1.Text;
string word = "Pen";

if(!string.IsNullOrEmpty(data))
    if(data.Contains(word))
    {
         // do work here
    }
于 2012-07-04T05:52:10.840 に答える