2016-11-17 3 views
2

Ich versuche, die letzten 6 Zeichen aus item.Size zu entfernen, da die Daten eine Dezimalstelle und 5 nachgestellte 0 in der Datenbank haben.Wie schneidet/trimmt man diesen Wert?

sb.Append("<div>" + item.Size + " " + item.Units + "&nbsp;</div>"); 

dh. item.Size wird als 1,00000 angezeigt und ich brauche es nur als 1 anzuzeigen.

Dies ist Teil eines StringBuilder, und wie ich bin neu in der Codierung, nicht einmal sicher, der richtige Weg, um darüber zu gehen.

+0

decimal.Truncate (dezimal) -> kürzt 123,456-123 für Dezimalstellen. –

+1

Wenn 'Size' ein numerischer Wert ist, warum wird es in einer' string' gespeichert? – juharr

+0

'Convert.ToInt32 (item.Size)' – vbguyny

Antwort

3
sb.Append("<div>" + (int)item.Size + " " + item.Units + "&nbsp;</div>"); 
+0

funktioniert nicht, wenn 'Größe' eine Zeichenfolge ist – Jonesopolis

+0

Dies funktionierte wie ein Charme, danke! –

+0

@ Jonesopolis 100 Punkte vor dem Datentyp doppelt oder dezimal :-) – user1681317

0

StringBuilder hat die gleichen Formatierungsfunktionen wie String.Format, wenn Sie die AppendFormat Methode verwenden:

sb.AppendFormat("<div>{0:N0} {1}&nbsp;</div>", item.Size, item.Units); 

Der Format-String "N0" erzählt die Zahl mit 0 Dezimalstellen zu formatieren. Das setzt voraus, dass die item.Size als numerischer Typ gespeichert wird. Wenn nicht, entfernen Sie einfach den Teil der Zeichenfolge, die Sie nicht wollen:

sb.AppendFormat("<div>{0} {1}</div>", item.Size.Split('.')[0], item.Units); 

Hier habe ich Split verwendet, unter der Annahme, dass der Wert tatsächlich etwas wie das, was Sie in Ihrem Beispiel gezeigt haben.

0

Besser verwenden Sie int.TryParse (oder Int32.TryParse) Methode. denn wenn item.Size nicht in int umwandelbar ist, gibt es keine Ausnahme. Sie können int oder long nach Ihrer Wahl verwenden. Sie können das also in Ihrem Code entsprechend der if/else-Bedingung handhaben.

Beispielcode:

int size; 
    string str = ""; 
    if(int.TryParse(str, out size) == true) 
    { 

    } 
    else 
    { 

    }