C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
188 个问题
你好
我正在开发我的程序,并希望找到一种方法来比较两个字符串(具有相似的数据但不相同)。
例如:
string barcode = "1234";
string string1 = "SkidBarcode " + barcode + " Scanned."
string string2 = "SkidBarcode @barcode Scanned."
if(Compare(string1, string2))
Console.WriteLine("they are similar");
public bool Compare(string string1, string string2)
{
/*
here I want to compare both strings. But It should ignore the place of the @barcode in string2 and the barcode variable from string1. So that it will return true in the current case.
*/
}
为此,我可以使用 “ ” (空格) 将两个字符串拆分为数组或列表,然后进行比较(例如,如果在同一索引 string2.item 以“@”开头并且其余索引数据相同,则返回 true)
我可以这样做:
例如: index[0] : “SkidBarcode” |“SkidBarcode” 索引[1] : “1234” |“@barcode” //检查忽略以 “@” 开头的索引 index[2] : “已扫描.” |“已扫描。”
public bool CompareSimilarStrings(string String1, string String2)
{
string[] strSplit1 = String1.Split(' ');
string[] strSplit2 = String2.Split(' ');
if (strSplit1.Length == strSplit2.Length)
{
for (int i = 0; i <= strSplit1.Length; i++)
{
if (!(strSplit1[i] == strSplit2[i]))
{
if (!(strSplit2[i].StartsWith("@")))
{
return false;
}
}
}
return true;
}
else
{
return false;
}
}
但我正在寻找一种更好的方法来实现这一目标。 如果有的话,请提出建议。
Note:此问题总结整理于: Compare two strings C#
请尝试以下代码是否适合您。
使用正则表达式查找以符号开头的单词,然后将其替换为上面的变量,并将其与第一个字符串进行比较。@
string barcode = "1234";
string string1 = "SkidBarcode " + barcode + " Scanned.";
string string2 = "SkidBarcode @barcode Scanned.";
string result = Regex.Replace(string2, @"\@\w+\b", match => barcode);
if (string1.Equals(result))
{
Console.WriteLine("they are similar");
}
如果回复有帮助,请点击“接受答案”并点赞。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。