得到两个字符串的公共前缀

Laz*_*sen 4 .net c# linq string comparison

我试图比较C#中的两个字符串,但我找不到一种方法来获得我需要的结果而不需要自己构建一些东西.

字符串:

TestasdOne
TestasdTwo

结果:

Testasd

我试过linq但是无法让它工作.我试过Google.

提前致谢.

Ham*_*jam 6

这是非linq版本,更高效,清晰和可读

public static string CommonPrefix(string a, string b)
{
    if (a == null)
        throw new ArgumentNullException(nameof(a));

    if (b == null)
        throw new ArgumentNullException(nameof(b));

    var min = Math.Min(a.Length, b.Length);
    var sb = new StringBuilder(min);
    for (int i = 0; i < min && a[i] == b[i]; i++)
        sb.Append(a[i]);

    return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)

用它就像

Console.WriteLine(CommonPrefix("TestasdOne", "TestasdTwo")); //Testasd
Run Code Online (Sandbox Code Playgroud)