比较包含随机网址

时间:2015-12-22 22:24:35

标签: c# asp.net .net

我需要比较以下字符串。我遇到的问题是两个字符串中的url每次都会有所不同,例如:

  

www.google.com
     http://www.google.com
     google.co.uk!

因为URL不匹配,所以包含的字符串不匹配。

String1 = "This is my string http://www.google.co.uk and that was my url"
String2 = "this is my string google.gr and that was my url"

所以我基本上想比较字符串的内容减去URl,每次字符串每次都可以包含不同的文本,所以每次在同一位置查找URL都不行。

我在这里广泛搜索了这个问题的答案,但我找不到合适的解决方案。

提前致谢

2 个答案:

答案 0 :(得分:4)

使用正则表达式删除链接:

        String string1 = "This is my string http://www.google.co.uk and that was my url";
        String string2 = "this is my string http://google.gr and that was";

        Regex rxp = new Regex(@"http://[^\s]*");
        String clean1 = rxp.Replace(string1, "");
        String clean2 = rxp.Replace(string2, "");

现在你可以将clean1与clean2进行比较。上面的OFC正则表达式只是一个例子它只是删除url盯着“http://”。根据您的真实数据,您可能需要更复杂的东西。

答案 1 :(得分:1)

使用正则表达式:

        Regex regex = new Regex(@"\s((?:\S+)\.(?:\S+))");

        string string1 = "This is my string http://www.google.co.uk and that was my url.";
        string string2 = "this is my string google.gr and that was my url.";

        var string1WithoutURI = regex.Replace(string1, ""); // Output: "This is my string and that was my url."
        var string2WithoutURI = regex.Replace(string2, ""); // Output: "this is my string and that was my url."

        // Regex.Replace(string1, @"\s((?:\S+)\.(?:\S+))", ""); // This can be used too to avoid having to declare the regex.

        if (string1WithoutURI == string2WithoutURI)
        {
            // Do what you want with the two strings
        }

解释正则表达式\s((?:\S+)\.(?:\S+))

1。 \s将匹配任何空格字符

2. ((?:\S+)\.(?:\S+))将匹配网址直到下一个空白字符

2.1。 (?:\S+)将匹配任何非空格字符而不再捕获该组(使用?:)

2.2。 \.将匹配字符“。”,因为它将始终存在于网址中

2.3。 (?:\S+))同样,将匹配任何非空格字符而不再捕获该组(使用?:)以获取点后的所有内容。

应该这样做......