2017-12-21 4 views
-1

文字列にデータテーブルに配置された単語が含まれていても正しく動作しないかどうかを調べるif文を実行しようとしています。datatableの文字列がwierdです。 .contain()で動作しません。C#

if (nickName.Contains(dt.Rows[1]["Word"].ToString())) 
{ 
    //something something 
} 

この場合、ニックネームは、ユーザー入力を含む文字列varです。 dtは単語を含むデータテーブルです(実際にはこのDTをループしますが、この例では問題ありません)

これはコピー&ペーストしても機能しません。

私もちょうど

if (dt.Rows[1]["Word"].ToString() == "some word") 

(はい私はDTでそのスポットが、私はチェックしようとしている言葉であることを確信している)これにしようとすると、動作しないことに気づきました。 (単語をコピーして貼り付ける場合でも)

do datatablesは面白そうなやり方で文字列を保存しますか?

解決方法はありますか?高度で 感謝:)

(ここではあなたがしたい場合は、コードの複数がある)

 //textboxes to vars 
     string nickName = tbtNickName.Text; 
     string tweet = tbTweet.Text; 

     //creating DT 
     var dt = new DataTable(); 
     using (var da = new SqlDataAdapter("SELECT * FROM Words;", "Data Source=localhost;Initial Catalog=twtWall;User Id=<id>; Password=<password>")) 
     { 
      da.Fill(dt); 
     } 

     //for each element in an array chek if you are in any inputs 
     for (int i = 0; i <= dt.Rows.Count - 1; i++) 
     { 
      //if word detected set error 
      if (nickName.Contains(dt.Rows[i]["Word"].ToString())) 
      { 
       errorProvider.SetError(BtnTweet, "Bad word detected!"); 
      } 

      //do the same thing with tweets... 

     } 
+1

その行にブレークポイントを置き、 'nickName'と' dt.Rows [i] ["Word"] ToString() 'が各ループと等しいかどうかを調べます。 – Equalsk

+1

文字列の先頭のスペースである可能性があります。 'dt.Rows [i] [" Word "] .ToString()。Trim()'や@Equalskのようにしてください。 – Alisson

+0

可能性がありますhttps://stackoverflow.com/questions/444798/case-insensitive-containsstring –

答えて

1

どのように大文字と小文字を区別問題については?スペースまたは余分な文字が含まれています。これらについては

、あなたは言葉をどこかで全体の入力テキストの中に隠されている場合、これがまた、大文字と小文字が区別シナリオを処理します代わりにContains

if (title.IndexOf("string", 0, StringComparison.CurrentCultureIgnoreCase) != -1) 

IndexOfを確認する必要があります。

関連する問題