2009-07-27 6 views
2

Ich versuche eine einfache Methode zu erstellen, um einen Namen (Vorname, Nachname, mittlere Initiale) in eine öffentliche URL-freundliche ID umzuwandeln (wie Stackoverflow mit Fragetiteln)). Jetzt könnten Leute alle Arten von verrückten Zeichen, Umlauten usw. eingeben. Gibt es etwas in .NET, das ich verwenden kann, um es auf URL-akzeptable/englische Zeichen zu normalisieren oder muss ich meine eigene Methode schreiben, um das zu erledigen?Generiere öffentlichen "ID Text" (wie Stackoverflow)

Vielen Dank!

Edit: Ein Beispiel (z. B. über RegEx oder andere Weise) wäre super hilfreich !!! :)

Antwort

8

Klingt nach dem, was Sie suchen, ist ein Slug Generator!

+0

Ja! Netter Link danke! – Alex

+0

Besteht beim Entfernen von Zeichen keine Gefahr, dass Sie von zwei verschiedenen Eingängen den gleichen Rückgabewert erhalten und daher eine nicht eindeutige Kennung erhalten? –

+0

Mein Verständnis ist, dass Sie einen Slug mit einer eindeutigen ID-Nummer verwenden, nicht an Stelle. Zum Beispiel gibt es zwei URLs zu dieser Frage zu erhalten - http://StackOverflow.com/Questions/1188283/generate-public-id-text-like-StackOverflow und http://StackOverflow.com/Questions/1188283/ –

0

Ein regulärer Ausdruck, um die Zeichenfolge mit den Zeichen und Längen zu validieren, die Sie zulassen möchten.

0

Denken Sie Ihre eigene Methode schreiben müssen ...

Listen sicherer Adressen von Zeichen ...

bis A Z

For Each c Wie char In Safe Wenn sicher .. usw. Weiter

1

Einfache Methode UrlEncode

Sie müssen natürlich etwas tun mit den Kollisionen zu behandeln (verhindern, dass sie auf Benutzererstellung sinnvoll zu sein, aber das bedeutet, dass Sie auf diese Struktur gebunden sind)

s => Regex.Replace(HttpUtility.UrlEncode(s), "%..", "") 

Dies ist Verlassen Sie sich auf die Ausgabe von UrlEncode immer mit zwei Zeichen für das codierte Formular, und dass Sie glücklich sind, Raum in '+' konvertieren