获得两个字符串之间的共同点## [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获得两个字符串之间的共同点## [关闭]相关的知识,希望对你有一定的参考价值。

我需要的是在两个单词之间得到共同点并得到差异。

例子:

场景1

  • word1 =见证
  • word2 =测试

将返回

  • 共同部分测试,差异imonial

情景2

  • word1 =测试
  • word2 =见证

将返回

  • 共同部分测试,差异imonial

场景3

  • word1 =见证
  • word2 =特斯拉

将返回

  • 共同部分Tes,差异timonial和la

这两个词的共同部分总是在开头。

换句话说,我需要保留单词的开头直到单词变得不同,而不是我需要得到差异。

我试图这样做,避免使用很多if和for。

感谢你们。

答案
class Program
{
    static void Main(string[] args)
    {
        string word1 = "Testimonial";
        string word2 = "Tesla";

        string common = null;
        string difference1 = null;
        string difference2 = null;

        int index = 0;
        bool same = true;

        do
        {
            if (word1[index] == word2[index])
            {
                common += word1[index];
                ++index;
            }
            else
            {
                same = false;
            }

        } while (same && index < word1.Length && index < word2.Length);

        for (int i = index; i < word1.Length; i++)
        {
            difference1 += word1[i];
        }

        for (int i = index; i < word2.Length; i++)
        {
            difference2 += word2[i];
        }

        Console.WriteLine(common);
        Console.WriteLine(difference1);
        Console.WriteLine(difference2);
        Console.ReadLine();
    }
}
另一答案

LINQ替代方案:

string word1 = "Testimonial", word2 = "Tesla";

string common = string.Concat(word1.TakeWhile((c, i) => c == word2[i]));

string[] difference = { word1.Substring(common.Length), word2.Substring(common.Length) };
另一答案

您可以使用IntersectExcept来获取它:

static void Main(string[] args)
{
    var string1 = "Testmonial";
    var string2 = "Test";

    var intersect = string1.Intersect(string2);
    var except = string1.Except(string2);

    Console.WriteLine("Intersect");

    foreach (var r in intersect)
    {
        Console.Write($"{r} ");
    }

    Console.WriteLine("Except");

    foreach (var r in except)
    {
        Console.Write($"{r} ");
    }

    Console.ReadKey();
}

请注意,这是一个简单的解决方案。例如:如果更改字符串的顺序,则不起作用,例如:

"Test".Except("Testmonial");

以上是关于获得两个字符串之间的共同点## [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的应用程序上获得两个 Facebook 用户之间的*所有*共同朋友?

查找两个活动记录项数组之间的共同项

如何在导航抽屉活动模板中的片段之间传递字符串变量

这两个代码片段之间有区别吗?如果有,那又如何? [复制]

比较两个字符串并返回它们之间的共同字符?

在给定二叉树中的两个值的情况下找到最不共同的祖先[关闭]