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



我是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

我不确定这是导致问题的原因。 但我确实知道这是一个足够大的问题,值得回答,因为如果它现在不导致你的问题,它将会给你带来一个问题。

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

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

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

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

。只需让您的其他文件具有如下名称/路径即可:

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

。你的比较是行不通的。

每当我看到 if(字符串 == 字符串(比较时,除非它正在检查"字符串,否则我将其视为等待中的错误。 相反,您需要类似以下内容:

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

。或类似。 看起来不太好看;不过,也没有可能的错误。

相关内容

  • 没有找到相关文章

最新更新