Versuche, mich nicht zu wiederholen (um DRY zu sein) hier, hilf mir. =)Wie man ein Double intelligent und sicher in String konvertiert?
Ich habe ein Doppel, die ein Rating repräsentiert/5.
Die möglichen Werte sind:
0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5.
ich ohne die Dezimalstelle dies zu einer String konvertieren möchten.
So würden die Werte werden:
"0", "05", "1", "15", "2", "25", "3", "35", "4", "45", "5".
, warum ich das tue? Weil ich versuche, um dynamisch einen Link zu erstellen basierend auf dem Wert:
string link = "http://somewhere.com/images/rating_{0}.gif";
return string.Format(link, "15");
Die möglichen Werte werden behandelt/anderswo validiert, also kann ich 100% sicher sein, der Wert immer einer von denen sein, werde ich erwähnt .
Irgendwelche Ideen? Einige spezielle Formate, die ich in der .ToString()
Methode verwenden kann? Oder bleibe ich bei einer un-DRY-switch-Anweisung stecken? Oder kann ich einen decimal.ToString().Replace(".","")
frech machen?
EDIT:
Whoah, danke für alle Antworten Jungs! =)
Die meisten Antworten sind korrekt, also lasse ich das für einen Tag oder so offen und wähle die Antwort mit den meisten Stimmen.
Wie dem auch sei, endete ich eine einfache Erweiterung Methode der Erstellung bis:
public static string ToRatingImageLink(this decimal value)
{
string imageLinkFormat = "http://somewhere.com/images/rating_{0}.gif";
return string.Format(imageLinkFormat, value.ToString().Replace(".0", string.Empty).Replace(".", string.Empty);
}
Vermutung ist es ein Fall von „KISS“ und „trocken“ war. In diesem Fall behielt der syntaktische Zucker der Erweiterungsmethoden DRY bei, und die tatsächliche Ein-Zeilen-Implementierung erfüllt KISS.
Ich habe versucht, einen 'NumberFormatInfo' erstellen, aber ich get 'Dezimaltrennzeichen kann nicht die leere Zeichenkette sein. Schande. – Kobi
+1 für die Frage gut strukturierte Frage – hydrogen