我需要比较以下字符串。我遇到的问题是两个字符串中的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都不行。
我在这里广泛搜索了这个问题的答案,但我找不到合适的解决方案。
提前致谢
答案 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+))
同样,将匹配任何非空格字符而不再捕获该组(使用?:)以获取点后的所有内容。
应该这样做......