c# - 如何检查两个命令行是否相等?
问题描述
我有以下两个命令行/运行过程:
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%
。但过程和命令不一样!
您认为我应该\
对路径-
进行子字符串匹配(--
由
解决方案
推荐阅读
- ios - 在 iOS 14.2 上使用 VoIP 打开 CallKit 无法在终止状态下工作
- sql - TSQL:查询以最大大小的数据包分组文件
- powershell - Powershell 比较两个目录中的文件夹和子文件夹名称
- javascript - 类型错误:jQuery.getJSON 不是函数
- java - 使用 next() 和 nextInt() 方法
- c# - .NET Core 基于路由的身份验证与多个 B2C 环境
- bash - 如何在 BASH 中每隔一小时执行一次循环?
- regex - 复制 findstr 找到的文件?
- dictionary - 在 Ansible 中遍历包含子元素的字典
- ios - “类型'Bundle'没有成员'模块'”仅在fastlane中