2017-12-21 11 views
-1

문자열에 데이터 테이블에있는 단어가 들어 있는지 확인하는 if 문을 실행하려고하는데 제대로 작동하지 않습니다.데이터 테이블의 문자열이 이상합니다. .contain() 함께 작동하지 않습니다. C#

이 경우 닉네임은 사용자 입력을 포함하는 문자열입니다. 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

어떻게 대소 문자 구분 문제에 대한? 또는 공백이나 여분의 문자가 포함되어 있습니다.

이 들어

, 당신은 IndexOf를 확인하는 대신 Contains

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

이 경우에게 민감한 시나리오를 처리하고 단어 어딘가에 전체 입력 텍스트에 숨겨진 또한 경우에해야한다.