1

richTextBox1 と richTextBox2 を単語ごとに比較しています。

// collect words from ritchtextbox1
String[] test = richtextbox1.text.Split(" ", StringSplitOptions.RemoveEmptyEntries);

// find each word test to richtextbox2
// if it is found then change back color of particular word to green of the 
// else change back color of particular word to red in richtextbox1

test = richtextbox2.text.Split(" ", StringSplitOptions.RemoveEmptyEntries);

// find each word in test to richtextbox1
// if it is found then change back color of particular word to green of the 
// else change back color of particular word to red in richtextbox2

私は構文が少し苦手です。

私はmateuszコードを参照しています

String[] test = richtextbox1.text.Split(" ", StringSplitOptions.RemoveEmptyEntries); 
String[] test2 = richtextbox2.text.Split(" ", StringSplitOptions.RemoveEmptyEntries);

bool wordNotFound=false;

for (int i=0;i<test.lenght;i++)
 for (int j=0;j<test2.length;j++){
   if (test[i].equals(test2[j])){
         wordNotFound=true
          break;
          }
     else wordNotFound=true;
  }

//// ここでは、ritchtextbox 全体ではなく、特定の単語の背景色を変更する必要があります

if (wordNotFound) richTextBox1.BackColor = Color.Red;
    else richTextBox1.BackColor = Color.Green;

2 つのテキスト ボックスを比較するのではなく、両側に存在するかどうかの各単語を検証します。スペル チェックと同じように、辞書を 1 つの richtextbox1 として取得します。リッチテキストボックス2のスペルチェック[有効な単語]。逆に...

4

4 に答える 4

2
var validWords = new HashSet<string>(new string[] { "a","c","e" });
string[] wordsToCheck = new string[] { "a", "b", "c", "d", "e" };

var result = wordsToCheck.Select(w => new
                {
                    Word = w,
                    IsValid = validWords.Contains(w)
                })
                .ToList();

すべての単語が有効かどうかのみに関心がある場合は、次の方法で簡単に確認できます

var isOK = wordsToCheck.All(w => validWords.Contains(w));

PS: もちろん、 s は*new string[]{}に置き換える必要があります。rtb.Split(....)

于 2012-12-12T14:11:11.290 に答える
1

単語が同じ順序である場合、なぜわざわざ分割する必要があるのでしょうか? 問題がなければ、次のようにします。

if (richtexbox1.text.equals(richtexbox1.text)){
 richTextBox1.BackColor = Color.Green;
} else {
 richTextBox1.BackColor = Color.Red;
}

そうでない場合、両方のテキスト ボックスに同じ単語が含まれているが順序が異なるかどうかを調べたい場合は、次のようにします。

    String[] test = richtextbox1.text.Split(" ", StringSplitOptions.RemoveEmptyEntries); 
    String[] test2 = richtextbox2.text.Split(" ", StringSplitOptions.RemoveEmptyEntries);

    bool wordNotFound=false;

    for (int i=0;i<test.lenght;i++)
     for (int j=0;j<test2.length;j++){
       if (test[i].equals(test2[j])){
             wordNotFound=false;
              break;
              }
         else wordNotFound=true;
      }

   if (wordNotFound) richTextBox1.BackColor = Color.Red;
        else richTextBox1.BackColor = Color.Green;
于 2012-12-12T12:42:04.330 に答える
0
 String[] test = richtextbox1.text.Split(" ", StringSplitOptions.RemoveEmptyEntries); 
    String[] test2 = richtextbox2.text.Split(" ", StringSplitOptions.RemoveEmptyEntries);

エラーが発生しています。

エラー 1 'string.Split(string[], System.StringSplitOptions)' に一致する最適なオーバーロード メソッドには、無効な引数がいくつかあります C:\Users\Saad\Documents\Visual Studio 2012\Projects\WindowsFormsApplication5\WindowsFormsApplication5\Form1.cs 60 29 Windowsフォームアプリケーション5

エラー 2 引数 1: 'string' から 'string[]' に変換できません C:\Users\Saad\Documents\Visual Studio 2012\Projects\WindowsFormsApplication5\WindowsFormsApplication5\Form1.cs 60 53 WindowsFormsApplication5

于 2016-05-12T13:03:50.043 に答える
-1

textbox1 の各単語を textbox2 と比較できます

for(int i = 0; i < stringarray1.length; i++)
{
 for(int j = 0; j < stringarray2.length; j++)
 {
   if(stringarray1[i] == stringarray2[j])
     // we have a match
 }
}
于 2012-12-12T12:38:55.273 に答える