Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 11
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Überprüfen ob String eine URL ist


Autor: Malte Peters
Sprache: C#
Bewertung: 1,8
(1 Bewertung)
Anzahl der Aufrufe: 3578
  
Kick it on dotnet-kicks.de  

Beschreibung:

Im Internet bin ich neben Regex auf keine weitere Lösung gekommen.

Gerade wenn es schnell gegen soll, darf es nicht kompliziert sein.

Daher überprüft das Snippet einfach ob URI.Host NULL ist.

Tritt bei überprüfen der URI ein Fehler auf gibt er ebenfalls FALSE aus.

Viel Spaß damit :-)


Abgelegt unter: URI, URL = String, String überprüfen, URI Class.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Bool
 private bool IsUrl(string url) {
            try
            {
                Uri adresse = new Uri(url);
                if (adresse.Host != null)
                {

                    return true;

                }
                else
                {
                    return false;

                }
            }
            catch {

                return false;
            
            }
        
        }

// Anwendung:

string EchteUrl = "http://www.networkfreaks.de";
string NurText = "Das war ein netter Versuch";

if(IsUrl(EchteUrl))MessageBox.Show("Echte URL ist ECHT");
if(!IsUrl(NurText))MessageBox.Show("NurText ist keine URL!");


///Nutzung frei nach belieben ;-)
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Christopher Kk schrieb am:  16.01.2011 15:36:05

Die Funktion kannst du auch noch kürzer halten.

private bool IsUrl(string url) {
try
{
Uri adresse = new Uri(url);
return adresse.Host != null;
}
catch {

return false;

}

}

Malte Peters schrieb am:  24.01.2011 11:06:37

gibt es denk ich tausende Wege ;) aber nett :-)
jmrtns schrieb am:  07.02.2011 13:00:26

Tut mir leid, aber das ist ganz schlechter Programmierstil.
1. wenn new Uri(url) keine Exception wirft, ist adresse.Host nie null
2. Eine Exception zu missbrauchen, weil mann anders nicht an die Antwort kommt ist keine Lösung. Eine Exception ist (wie der Name schon sagt) eine Ausnahme. Ein guter Entwickler sollte Exceptions vermeiden, nicht absichtlich auslösen (Wir bauen noch genügend Fehler ungewollt ein ;-) ).
Übrigens, eine Exception ist auch aus Performance-Sicht eine schlechte Wahl.
3.Wenn du schon eine Exception fängst, solltest du nicht generell alle Exceptions fangen, sondern hier nur die UriFormatException. Denn wenn beispielsweise bei einer gültigen URL eine OutOfMemory Exception geworfen würde, würdest du daraus den Schluss ziehen, dass diese URL ungültig ist.

Da ist ein regex doch die bessere Wahl.
vitalienbruder schrieb am:  07.02.2011 18:26:33

Beide Ansätze sind, aus meiner Sicht, sehr unüberzeugend.
xenex schrieb am:  17.05.2011 11:26:05

Um es ohne Exception zu lösen, gibt es doch die statische TryCreate-Methode, die zurückgibt ob das erstellen möglich war.
O.G. schrieb am:  13.08.2011 05:35:58

Also ich hab das immer so Überprüft:
/// <summary>
/// [ Funktion ] Url Check V1
/// </summary>
/// <param name="Str_Url"></param>
/// <returns></returns>
private bool UrLCheck(string Str_Url)
{
//####################################################
// Locale Variabel
bool Str_Rueckmeldung;
//####################################################
try
{
if ((Str_Url.Substring(0, 4) == "www.") || (Str_Url.Substring(0, 7) == "http://")) { Str_Rueckmeldung = true; }
else { Str_Rueckmeldung = false; }
}
catch { Str_Rueckmeldung = false; }
return Str_Rueckmeldung;
}
Scavanger schrieb am:  19.08.2011 01:17:17

Da Snippet von O.G. ist auch nicht besser, nur weil ein String mit http:// oder www. anfängt ist es noch lang keine gültige URL. Was ist z.B. mit SSL (https://... ) ?

Zum Programmierstil wurde schon einiges geschrieben, viel wichtiger ist aber das URL != URI ist. URL: http://de.wikipedia.org/wiki/Uniform_Resource_Identifier

Gültige URIs:
http://dotnet-snippets.de
ftp://ftp.heise.de/
mailto:test@test.de
file:///home/test/test
tel:+49-089-123456
bloedsinn:mit_doppelpunkt

BTW: .host ist nicht null sondern nur ein leerer String wenn kein Host vorhanden ist.

Werden alle von Snippet als gültige URLs erkannt.

Der einzig korrekte Web URLs zu erkennen ist sich klarzumachen was als korrekte URL erkannt werden soll und dann Regex zu verwenden.
RundR schrieb am:  05.09.2011 11:59:15

private bool IsUrl(string url)
{
return Uri.IsWellFormedUriString(url, UriKind.Absolute);
}


Oder etwa nicht, ist doc hviel einfacher ?!
Scavanger schrieb am:  08.09.2011 23:28:36

@RundR:

Nein, das funktioniert nicht, deine Funktion liefert die gleichen Ergebnisse die ich oben beschrieben habe.

Die Frage würde sich auch bei einem Blick in die MSDN erübrigen:

Uri.IsWellFormedUriString-Methode
"Gibt an, ob eine Zeichenfolge wohlgeformt ist, indem versucht wird, einen URI aus der Zeichenfolge zu erstellen. Es wird sichergestellt, dass keine weiteren Escapezeichen in die Zeichenfolge eingefügt werden müssen."
http://msdn.microsoft.com/de-de/library/system.uri.iswellformeduristring.aspx

Nochmal: Hier wird dir URI-Klasse benutzt, eine URI ist aber NICHT automatisch eine URL!
Eine URL ist aber immer eine URI!
RundR schrieb am:  19.09.2011 08:19:02

Klar das ist mir schon bewusst, aber es ist sauberer als der Vorgabecode.

Denke da muss man mit RegularExpressions ran damit man ne saubere prüfung hat.


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.