ラベル内の文の単語を参照する方法を知りたいです。たとえば、私は次のようにしています。
label1.text = "books pencil pen ruler";
「 label1.textに「pen」という単語が含まれている場合は、何かを実行してください」:
if (label1.text CONTAINS THE WORD "pen")
{
// do something
}
どうすればよいですか?
正規表現の単語境界を使用します。
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."
。正規表現の単語の境界は、予想どおり、これらすべてに一致します。より多くの単語境界文字に分割することもできますが、単語境界を自分で理解しようとするよりも、正規表現クラスの作成者に作業を任せる方がはるかに簡単です。
string.Split()を使用してそのテキストをトークンに分割し、Array.Containsを使用して単語がリストに含まれているかどうかを確認できます。
string sentence = "books pencil pen ruler";
string[] words = sentence.Split(' ');
bool hasFox = words.Contains("pen");
スペース(タブなど)だけでなく、より多くの区切り文字を使用できるようにする場合は、分割を使用するときに区切り文字を追加できます。一致の大文字と小文字の区別が気になる場合は、IEqualityComparerを使用するContainsのオーバーロードを使用できます。
ペンの単語が単語の間にあり、文字列の最初または最後ではないと予想される場合。
if(label1.text.IndexOf(" pen ") != -1 )
{
//do something
}
編集
話し合った結果、正規表現がより良い選択肢であることがわかりました。
if (Regex.IsMatch(label1.Text, @"\bpen\b"))
{
//do something
}
試す -
if(label1.text.contains(" pen "))
{
//do something
}
前後にスペースを追加するだけpen
です。
string s1 = "books pencil pen ruler";
string s2 = "pen";
if(s1.Contains(s2) && s2 != "")
{
// do something
}
これは役立つはずです
string data = label1.Text;
string word = "Pen";
if(!string.IsNullOrEmpty(data))
if(data.Contains(word))
{
// do work here
}