Domanda

Come posso accettare stringhe come " $ 1.250,00 " e convertirlo in un decimale in C #?

Devo solo sostituire (" $ " ;, " " ") e (", " ;, " ") o esiste un modo diverso di gestire questo tipo di input?

È stato utile?

Soluzione

Hai provato Decimal.Parse con l'opzione AllowCurrencySymbol (e altre opzioni di supporto)?

var d = Decimal.Parse(input, 
  NumberStyles.AllowCurrencySymbol |
  NumberStyles.AllowDecimalPoint |
  NumberStyles.AllowThousands);

Altri suggerimenti

  

Devo solo fare un Sostituisci (" $ " ;, " ") e Sostituisci (", " ;, " " ") [ ?]

No. Per uno, il codice come questo non è divertente da mantenere. In secondo luogo, "$" non è l'unico simbolo di valuta al mondo e "," non è le uniche migliaia di separtor. Cioè, il codice come stai pensando rende difficili i problemi di globalizzazione.

  

[I] c'è un modo diverso di gestire questo tipo di input?

Sì. Usa Decimal.Parse con NumberStyles.Currency :

string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);

ora con formattazione :)

decimal val = Decimal.Parse(
    Value.Replace(" ", ""), 
    NumberStyles.AllowThousands 
     | NumberStyles.AllowDecimalPoint 
     | NumberStyles.AllowCurrencySymbol
);

http://www.codeproject.com/KB/cs/Eduardo_Sierra.aspx

Questo dovrebbe fare il trucco:


      string money = "$1,250.00";
      money = money.Replace(',' ');
      decimal test = Convert.ToDecimal(money);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top