2016-07-11 96 views
0

Ich muss 2 URLs übereinstimmen, das erste kommt von MySQL db und das zweite kommt von einer HTML-Seite. Wenn ich vergleiche beide als StringC# Kann nicht übereinstimmen Html Sonderzeichen

var match = Regex.Match(href.Attributes["href"].Value, testString, RegexOptions.IgnoreCase);

die match.Success = false. Beide Saiten sind wie this : myUrl/rollcontainer-weiß aber die Match.Success ist immer noch falsch.

Ich habe versucht, HttpUtility.HtmlEncode hinzufügen, um beide Zeichenfolgen zu überprüfen, und ich bekomme: myUrl/rollcontainer-wei&#233 für die erste und myUrl/rollcontainer-wei&ß für die zweite.

Wie kann ich in diesem Fall eine match.Success = true haben?

+0

Was ist mit dieser [Antwort] (http://stackoverflow.com/a/18331804)? –

+0

Ich bekomme -1, wenn ich Uri.Compare verwende – Gun

+0

Versuchen Sie 'var match = Regex.Match (href.Attributes [" href "]. Wert, Regex.Escape (HttpUtility.HtmlDecode (testString)), RegexOptions.IgnoreCase);' –

Antwort

1

Probieren Sie diese Funktion zum Beispiel aus.

static void Main(string[] args) 
{ 
    bool test = Test("http://myUrl.com/rollcontainer-Wei&ß", "http://myUrl.com/rollcontainer-wei&ß"); 

} 

public static bool Test(string url1, string url2) 
{ 
    Uri uri1 = new Uri(HttpUtility.HtmlDecode(url1)); 
    Uri uri2 = new Uri(HttpUtility.HtmlDecode(url2)); 

    var result = Uri.Compare(uri1, uri2, 
     UriComponents.Host | UriComponents.PathAndQuery, 
     UriFormat.Unescaped, StringComparison.OrdinalIgnoreCase); 

    return result == 0; 
} 
+0

Cool! Es klappt! Ich habe es aber ohne den HtmlDecode im Uri versucht! – Gun

+0

FYI Es gibt auch 'WebUtility.HtmlDecode' (in' System.Net'). Verfügbar seit .Net 4.0. –