C# C在两个字符串中搜索重复项,并将唯一值写入变量

C# C在两个字符串中搜索重复项,并将唯一值写入变量,c#,C#,案文1: %开始:这是开始:%End %开始:这是不同的:%End %开始:这是开始2:%End . ; ; n 案文2: %开始:这是开始3:%End %开始:这是开始:%End %开始:这是不同的:%End . ; ; n 结果应该是: %开始:这是开始:%End %开始:这是不同的:%End %开始:这是开始2:%End %开始:这是开始3:%End 比较文本1和文本2,在结果中提供唯一值。两个文本中的数据始终位于标记%start和%End之间 您可以使用Linq来实现这一点。只需创建两个

案文1: %开始:这是开始:%End %开始:这是不同的:%End %开始:这是开始2:%End . ; ; n

案文2: %开始:这是开始3:%End %开始:这是开始:%End %开始:这是不同的:%End . ; ; n

结果应该是: %开始:这是开始:%End %开始:这是不同的:%End %开始:这是开始2:%End %开始:这是开始3:%End

比较文本1和文本2,在结果中提供唯一值。两个文本中的数据始终位于标记%start和%End之间

您可以使用Linq来实现这一点。只需创建两个列表,然后使用Union方法连接两个列表。此方法从返回集中排除重复项。。详情请查收

代码1:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<string> list1 =new List<string>();
        list1.Add("%start : this is start : %End");
        list1.Add("%start : this is different : %End");
        list1.Add("%start : this is start 2: %End");

        List<string> list2 =new List<string>();
        list2.Add("%start : this is start 3: %End");
        list2.Add("%start : this is start : %End");
        list2.Add("%start : this is different : %End");

        List<string> list3 = list1.Union(list2).ToList();
        foreach(string item in list3){
            Console.WriteLine(item);
        }
    }
}
代码2:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<string> list1 =new List<string>();
        list1.Add("text 1");
        list1.Add("text 2");
        list1.Add("text 3");

        List<string> list2 =new List<string>();
        list2.Add("text 4");
        list2.Add("text 1");
        list2.Add("text 2");
        list2.Add("text 5");

        List<string> list3 = list1.Union(list2).ToList();
        foreach(string item in list3){
            Console.WriteLine(item);
        }
    }
}

请检查

问题说这些都是单数字符串,包含多个%start/%end对。有趣的是,这些都是你可以忽略的红鲱鱼。这并不是真正区分子字符串值的地方

您的讲师在赋值子字符串和开始/结束指示器之间使用了“:”字符,从而意外地在作业中打了一个洞。如果使用此方法分割值,并在结果数组中抛出包含%的任何字符,则在滚动输出时,可以人为地将开始/结束对放回原处

假设文本1是一个名为text1的字符串,而文本2是一个名为text2的字符串:

List<string> result = new List<string();
//use Split() to get string arrays
var a = text1.Split(":");
var b = text2.Split(":");

foreach(var s in a)
{
   if(!a.Contains("%"))
      result.Add("%start : " + a + ": %End");
}
foreach(var s in b)
{
   if(!b.Contains("%"))
      result.Add("%start : " + b + ": %End");
}

return result.Distinct();

在生产环境中可能有点麻烦,但在本例中,它是功能性的

听起来不错,你的问题是什么-我需要使用标记%start和%End来比较text1和text2中的数据。将text1中的所有数据写入结果,如果text2中的数据与text1数据相比是唯一的,则只应将其写入结果。将所有字符串添加到列表中,然后单击列表。Distinct@bHaRaThN:我们询问您尝试了哪些代码示例,尝试回答一个每隔几秒钟就会改变的问题就像向一只正在奔跑的小狗扔蜜蜂一样,所以如果它能停止改变,那会很有帮助。OP彻底改变了他的例子。这要容易得多,所以你可能想更新你的答案:我今天为某人做了一次作业,达到了我的配额。我想说,使用一套会更好。