【问题标题】:Not deleting the line with "0" [closed]不删除带有“0”的行[关闭]
【发布时间】:2014-11-14 15:39:52
【问题描述】:

我在我的 C# 应用程序中编写了一个函数,当 "0" 到来时,它应该删除整行。 但我不知道我的输出文本文件没有删除它。

我该如何解决这种情况。

代码sn-p:

   public void do_name()
    {
        string[] search_text = new string[] { "PCB", "DOC", "PCB1", "DOC1" };
        string old;
        StringBuilder sb = new StringBuilder();
        using (StreamReader sr = File.OpenText(textBox1.Text))
        {
            while ((old = sr.ReadLine()) != null)
            {
                if (old.Contains(search_text[0]) || old.Contains(search_text[1]) ||
                    old.Contains(search_text[2]) || old.Contains(search_text[3]) ||
                   old.Split(" ".ToArray()).Equals("0"))
                     //here delete's the line where, "PCB", "DOC", "PCB1", "DOC1" is coming.
                     //but not '0"
                    continue;
                else
                    sb.AppendLine(old);
            }
            sr.Close();
        }
        File.WriteAllText(textBox1.Text, sb.ToString());
    }

我的输入文本文件如下所示:

       "CN5"    "210-0141"  "PHOENIX/8/150/V/F" "353.441"   "115.951"
       "CN8"    "210-0141"  "PHOENIX/8/150/V/F" "317.881"   "115.824"
       "CN9"    "210-0141"  "PHOENIX/8/150/V/F" "265.176"   "115.951"
        "*1"    "210-0150"  ""  "0" "0"
        "*10"   "210-0150"  ""  "0" "0"
        "*11"   "210-0150"  ""  "0" "0"
        "*12"   "210-0150"  ""  "0" "0"
        "*13"   "210-0150"  ""  "0" "0"
        "*14"   "210-0150"  ""  "0" "0"
        "*15"   "210-0150"  ""  "0" "0"

【问题讨论】:

  • "0" is coming. 到底是什么意思?
  • ==.Equals 之间存在区别 Stacy 一个比较对象,另一个比较简化的值
  • @FlorianF。在我的输入文本文件中......会有这样的“0”///所以我需要删除这一整行。当“0”出现时!
  • 使用调试器..并逐步执行代码..您也不需要新建字符串[],因为您已经使用值对其进行了初始化,所以这也可以使用相同的string[] search_text = { "PCB", "DOC", "PCB1", "DOC1" };
  • 为什么不提前检查然后if(old[3] == 0.ToString() || old[4] == 0.ToString(){ continue;}你的逻辑向后看..这些与输入文件有什么关系"PCB", "DOC", "PCB1", "DOC1"

标签: c# string text text-files


【解决方案1】:
old.Split(" ".ToArray()).Equals("0"))

总是为假,因为Split 返回一个数组,而您将它组合成一个字符串

我怀疑你想要

old == "0"

相反。要么,要么你需要清楚你的条件(字符串中的0 anywhere?作为拆分值之一的0?作为第一个的“0” 分割值?)

作为拆分值之一

然后使用

old.Split('\t').Contains(@"""0"""))

请注意,采用字符数组的Split 的重载使用params 关键字,因此您可以传入单个字符,而不是将字符串转换为字符数组。我还将0 包含在引号中,因为这就是您输入数据的格式。

【讨论】:

  • old.StartsWith("0")old.Contains("0"),这在很大程度上取决于“0 即将到来”的含义。
  • @D Stanley 还在继续
  • @D Stanley 请看我的输入文件..
  • @D Stanley 作为拆分值之一
  • 您的输入是 tab 分隔的,而不是 空格 分隔的。我已经更新了我的答案以反映这一点。如果我的答案仍然无效,我会使用这些详细信息更新您的问题以重新打开它。
猜你喜欢
  • 2012-02-12
  • 1970-01-01
  • 2020-09-05
  • 2019-10-17
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
相关资源
最近更新 更多