【问题标题】:How to remove lines from lines in C#?如何从 C# 中的行中删除行?
【发布时间】:2015-09-24 07:39:26
【问题描述】:

尝试创建从一组行中删除一行行的代码。我盯着这段代码看了 50 分钟,不知道为什么它不起作用(似乎没有删除任何东西)。请帮忙?

        public string[] removeLinesFromLines(string[] remLns, string[] lns)
        {
            //convert lns into equivalent string
            string lnst = "";
            foreach (string ln in lns)
            {
                lnst += ln + Environment.NewLine;
            }
            lnst = lnst.Trim(Environment.NewLine.ToCharArray());

            //convert remlns into equivalent string
            string remt = "";
            foreach (string ln in remLns)
            {
                remt += ln + Environment.NewLine;
            }
            remt = remt.Trim(Environment.NewLine.ToCharArray());

            //delete all instances of remlns from lns
            lnst = lnst.Replace(remt, "");

            //convert back into array
            return Regex.Split(lnst, Environment.NewLine); 
}

用 lns =

一个

b

c

d

b

d

c

和remlns =

b

c

输出应该是……

一个

d

b

d

c

代码真的很简单!从功能上讲,它就像 4 条不同的线。

【问题讨论】:

  • 那是因为它只有在匹配整个 remt 字符串时才会替换它。我认为这不会发生。
  • 你盯着它看 50 分钟是正常的:它真的很复杂。您应该尝试寻找更简单的解决方案,例如@un-lucky's :)
  • 不,这真的很简单,兄弟。我已经对其进行了评论,以使其更容易理解。
  • 发现问题:我的代码有效,输入无效,哈哈。

标签: c# string newline lines


【解决方案1】:

你在寻找这样的东西吗?

public string[] removeLinesFromLines(string[] remLns, string[] lns)
        {
            var result = lns.Except(remLns);
            return result.ToArray(); 
        }

这将返回一个字符串数组,这些字符串存在于lns 但不存在于remLns

【讨论】:

  • 似乎已经取出了包含 remLns 中任何一行的每一行(remln 的长度为 11 行,它从 lns 中取出了 150 行)。试图从 lns 中删除 RemLns 中的整个文本块,而不是 lns 中存在的 remln 中的每一行。不过看起来很优雅。从上面的示例中,您的答案会产生“A D D”,因为它删除了 B 和 C 的每个实例。
猜你喜欢
  • 2016-02-17
  • 2019-08-28
  • 1970-01-01
  • 2019-10-13
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
相关资源
最近更新 更多