为什么看起来相同的两个字符串不相同?

时间:2018-05-09 14:49:50

标签: c# .net string textbox bunifu

我是c#和编码的新手。如果我问一个愚蠢的问题,请原谅我。我首先使用Directory.GetFiles()如下:

var savedfiles = Directory.GetFiles(@"C:\DiaryFiles");

现在,我有一个文本框bunifuTextbox1,其中我写了一些文字" Amogh"这是来自" C:\ DiaryFiles"的文件名。然后我使用函数nameRepair(),如下所示:

private string nameRepair(string suspectfile)
{
    return  @"C:\DiaryFiles\" + suspectfile + ".akb";
}

(。akb是一个扩展名)。但是,当我尝试这样做时会出现问题:

foreach(string f in SavedFiles)
    if(f.Trim() == nameRepair(form.bunifuTextbox1.text).Trim())
    {
        //this code is not executed:(
    }
    else
    {
        //this part is executed
    }

if的条件总是返回false

我做错了什么?

修改 :(我发布的是整个代码)

foreach (string f in savedfiles)
{
    this.label = new Label();
    this.label.Location = new System.Drawing.Point(108, 36 + customLabels.Count * 26);
    this.label.Name = f;
    this.label.Text = (f.Replace(@"C:\DiaryFiles\","")).Replace(".akb", ""); 
    this.label.Width = f.Length * 20;
    this.label.BackColor = System.Drawing.Color.Black;
    if(f.Trim() == nameRepair(form.bunifuTextbox1.text.Trim()))
    {
        this.label.ForeColor = System.Drawing.Color.Red;
    }
    else
    {
        this.label.ForeColor = System.Drawing.Color.White;
    }       
}

我尝试在运行时创建标签,并希望更改与文本框文本匹配的标签上的文本颜色。

您可以在此处查看整个项目:

https://drive.google.com/open?id=1q6eqiGvWnQYV7f_t8abG1cTwbVlUIqbm

1 个答案:

答案 0 :(得分:0)

我不确定这是导致问题的原因。但是我 DO 知道这是一个足以得到答案的问题,因为如果它不会导致您的问题现在,它会在中为您造成一个问题将来

字符串比较区分大小写。这意味着,在您的代码行中:

if(f.Trim() == nameRepair(form.bunifuTextbox1.text).Trim())

...你正在检查字符串是否完全相同,包括对案例的敏感性。现在,我们知道您的nameRepair函数显式添加路径:

return  @"C:\DiaryFiles\" + suspectfile + ".akb";

...只需要您的其他文件有一个名称/路径,如:

c:\diaryfiles\********.akb

...而你的比较不起作用。

每当我看到if(string == string)比较时,除非它检查“”字符串,否则我将其视为等待中的错误。相反,你需要像:

if (stringA.Equals(stringB, StringComparison.OrdinalIgnoreCase))

......或类似的。看起来不那么好;但是,也没有可能的错误。