2010-12-28 3 views
2

Angesichts einer Liste von Strings, ich bin interessiert zu finden, welche gültig sind http:// URLs. Mein erster Ansatz wäre, einen regulären Ausdruck zu verwenden und so etwas tun:URLs in .NET finden?

var urls = strs.Where(str => urlRegex.matches(str));

Gibt es eine idiomatische/natürliche/einfache Art und Weise, es zu tun?

Antwort

0

Sie können das in System.Uri Class integrierte Parsing verwenden, um die URLs zu validieren. Dies hat den Vorteil, dass Abfragezeichenfolgen, die in der URL enthalten sind, korrekt gehandhabt werden und alle Zeichenfolgen analysieren können, die .Net als URL verwenden kann.

Nachdem Sie mit TryCreate versucht haben, jede Zeichenfolge zu analysieren, überprüfen Sie, ob die Uti.Scheme-Eigenschaft eine HTTP-URL ist (andernfalls würde auch ein Dateisystempfad den Filter passieren).

1

Ja, ich würde Uri.TryCreate verwenden und dann die Scheme-Eigenschaft von erfolgreich geparsten URIs testen, um sicherzustellen, dass es HTTP ist.

Wenn jedoch die gesuchten URI Teilzeichenfolgen eines größeren Textblocks sind, ist Regex der richtige Weg.

1

Ich würde für die Regex-basierte Ansatz gehen und Ihr Ansatz sieht gut aus für mich