2009-08-13 8 views
2

Ich habe eine Schaltfläche, die, wenn der Benutzer darauf klickt, zu einer angegebenen URL wechseln muss.Erstellen einer URL aus Feldern für geänderte Datenbanken

Aber ich muss meine URL aus den Werten aus der Datenbank erstellen und vor allem muss ich die Werte aus der Datenbank ändern, bevor ich eine URL daraus machen.

Angenommen, die Werte aus der Datenbank

country- France 
hotel - Hotel Movenpick 

Jetzt ist zuerst muss ich die Hauptstädte von oben Werte drehen Räume in Kleinbuchstaben, dann auf ‚-‘ Zeichen.

Dann muss ich meine URL mit diesen modifizierten Werten wie folgt erstellen.

http://www.travel.com/france/hotel-movenpick 

Ich habe das noch nie zuvor getan. Bitte geben Sie mir eine Referenz für diese Aufgabe. Ich codiere in C#.

Antwort

1

Wie wäre:

string fixedCountry = country.ToLower(CultureInfo.InvariantCulture) 
          .Replace(" ", "-"); 
string fixedHotel = hotel.ToLower(CultureInfo.InvariantCulture) 
        .Replace(" ", "-"); 

string url = "http://www.travel.com/" + fixedCountry + "/" + fixedHotel; 

Beachten Sie, dass diese nicht keine Zeichen mit Akzent oder andere Symbole reparieren. Es wird komplizierter, wenn Sie das tun wollen. Es hängt davon ab, wie sehr Sie darauf vertrauen, dass Ihre Daten solche Dinge nicht enthalten.

Wenn Sie dies komplizierter machen müssen oder es woanders tun müssen, empfehle ich Ihnen, eine "String-Fixing" -Methode zu erstellen, die es entsprechend anstößt, und sie dann für jedes Ihrer Felder aufzurufen.

EDIT: Entfernen von akzentuierten Zeichen ist interessant. .NET macht das ziemlich einfach, aber ich weiß nicht, was es für Ihre "ae" Situation tun wird - Sie müssen das vielleicht Sonderfall machen. Versuchen Sie, diese aber als Ausgangspunkt:

static string RemoveAccents (string input) 
{ 
    string normalized = input.Normalize(NormalizationForm.FormKD); 
    Encoding removal = Encoding.GetEncoding 
     (Encoding.ASCII.CodePage, 
     new EncoderReplacementFallback(""), 
     new DecoderReplacementFallback("")); 
    byte[] bytes = removal.GetBytes(normalized); 
    return Encoding.ASCII.GetString(bytes); 
} 
+0

Ich würde argumentieren Sie ein paar Anrufe zu Uri.EscapeDataString müssen dort, von ungültigen Zeichen URL in dem Land oder einen Hotelnamen zu schützen. –

+0

Ich muss sogar einige spezielle Sprache spezifizierte Zeichen konvertieren, zum Beispiel ä bis ae. Glaubst du, ich kann sie wie oben beschrieben tun? – subha

+0

Bearbeiten, um das abzudecken ... –

Verwandte Themen