C# datatable中的字符串是wierd。不适用于.contain()C

C# datatable中的字符串是wierd。不适用于.contain()C,c#,datatable,C#,Datatable,我试图运行一个if语句,检查字符串是否包含放置在datatable中的单词,但它不能正常工作 if (nickName.Contains(dt.Rows[1]["Word"].ToString())) { //something something } 在本例中,昵称是包含用户输入的字符串变量。 dt是一个数据表,其中包含单词,我实际上在这个dt中循环,但这对本例并不重要 但这不起作用。。。即使我复制粘贴了这个词 我还注意到,只要试着这样做是的,我确信DT中的那个点就是我要检查的单词

我试图运行一个if语句,检查字符串是否包含放置在datatable中的单词,但它不能正常工作

if (nickName.Contains(dt.Rows[1]["Word"].ToString()))
{
    //something something
}
在本例中,昵称是包含用户输入的字符串变量。 dt是一个数据表,其中包含单词,我实际上在这个dt中循环,但这对本例并不重要

但这不起作用。。。即使我复制粘贴了这个词

我还注意到,只要试着这样做是的,我确信DT中的那个点就是我要检查的单词

 if (dt.Rows[1]["Word"].ToString() == "some word")
即使在复制和粘贴单词时也不起作用

数据表是否以一种有趣的方式存储字符串

你们有解决办法吗

如果需要,这里有更多的代码

        //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...

        }

区分大小写的问题呢?或包含空格或额外字符

对于这些,您应该检查IndexOf而不是Contains


这将处理区分大小写的情况,以及word是否隐藏在整个输入文本中的某个位置。

在该行上放置一个断点,查看昵称和dt.Rows[i][word].ToString在每个循环中相等。它可能是字符串中的前导空格。尝试类似dt.Rows[i][Word].ToString.Trim或执行@Equalsk建议的操作。可能不会,DataTables不存储字符串。您有一些逻辑错误,但不清楚该错误可能是什么。一些示例数据是什么?有多少列?他们叫什么名字?你会在单词列中找到什么值?@DourHighArch不确定你是否混淆了另一种语言,在C Hello.ContainsHello中;这是真的。
if (title.IndexOf("string", 0, StringComparison.CurrentCultureIgnoreCase) != -1)