首页 > 解决方案 > 如何检查两个命令行是否相等?

问题描述

我有以下两个命令行/运行过程:

string x = @"""C:\Users\Bob\AppData\Local\Microsoft\OneDrive\OneDrive.exe"" /background"
string y = @"""C:\Users\Alice\AppData\Local\Microsoft\OneDrive\OneDrive.exe"" /background"

我们知道命令是相同的,但是我们不能使用,CompareTo因为它会失败(由于不同的用户名)。根据给我的一条建议作为对我的另一个问题的回答,我使用了以下代码:

private static int ComputeDistance(string s, string t)
        {
            s = s.ToLower();
            t = t.ToLower();
            int n = s.Length;
            int m = t.Length;
            int[,] distance = new int[n + 1, m + 1];
            int cost = 0;
            if (n == 0) return m;
            if (m == 0) return n;
            for (int i = 0; i <= n; distance[i, 0] = i++) ;
            for (int j = 0; j <= m; distance[0, j] = j++) ;
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= m; j++)
                {
                    cost = (t.Substring(j - 1, 1) ==
                        s.Substring(i - 1, 1) ? 0 : 1);
                    distance[i, j] = Math.Min(Math.Min(distance[i - 1, j] + 1,
                    distance[i, j - 1] + 1), distance[i - 1, j - 1] + cost);
                }
            }
            return distance[n, m];
        }

public static float GetSimilarity(string string1, string string2)
        {
            float dis = ComputeDistance(string1, string2);
            float maxLen = string1.Length;
            if (maxLen < string2.Length)
                maxLen = string2.Length;
            if (maxLen == 0.0F)
                return 1.0F;
            else
                return 1.0F - dis / maxLen;
        }

利用:Console.WriteLine(100 * MyClass.GetSimilarity(x, y));

两个给定的命令行匹配:93,33334. 这没关系。但是我有很多误报!(匹配大于75%- 由我建立)。例如:

string x =  @"""C:\Users\Bob\Desktop\Directory\1.exe"" -p -s";
string y = @"""C:\Users\Alice\Desktop\Directory\2.exe"" -W";

比赛:77,27273%。但过程和命令不一样!

您认为我应该\对路径-进行子字符串匹配(--

标签: c#

解决方案


推荐阅读