比较两个字符串 C#

Jiale Xue - MSFT 46,466 信誉分 Microsoft 供应商
2024-06-18T06:29:07.9366667+00:00

你好

我正在开发我的程序,并希望找到一种方法来比较两个字符串(具有相似的数据但不相同)。

例如:

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#

C#
C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
188 个问题
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Hui Liu-MSFT 48,571 信誉分 Microsoft 供应商
    2024-06-19T01:58:17.25+00:00

    请尝试以下代码是否适合您。

    使用正则表达式查找以符号开头的单词,然后将其替换为上面的变量,并将其与第一个字符串进行比较。@

                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");  
                }  
    

    如果回复有帮助,请点击“接受答案”并点赞。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    0 个注释 无注释

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。