كيف يمكنني تقبل سلاسل مثل "$ 1،250.00" وتحويله إلى عشري في C #؟
سؤال
وكيف يمكن أن أقبل سلاسل مثل "$ 1،250.00" وتحويله إلى عشري في C #؟
هل أنا فقط لا لتحل محل ( "$"، "") و ( ""، "") أو أن هناك طريقة مختلفة وأود أن التعامل مع هذا النوع من الإدخال؟
المحلول
هل حاولت Decimal.Parse مع خيار AllowCurrencySymbol (وغيرها من الخيارات الداعمة)؟
var d = Decimal.Parse(input,
NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands);
نصائح أخرى
هل أنا مجرد القيام Replace("$", "")
وReplace(",", "")
[؟]
ولا. لأحد، رمز مثل هذه ليست متعة للمحافظة عليه. ثانيا، '$' ليس رمز العملة الوحيدة في العالم، و'،' هو لم يكن الآلاف الوحيد separtor. وهذا هو، رمز مثل كنت أفكر يجعل قضايا العولمة صعوبة.
<اقتباس فقرة>[I] ق هناك طريقة مختلفة وأود أن التعامل مع هذا النوع من الإدخال؟
اقتباس فقرة> نعم. استخدام Decimal.Parse
مع <لأ href = "HTTP: / /msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx "يختلط =" noreferrer "> NumberStyles.Currency
:
string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
والآن مع التنسيق:)
decimal val = Decimal.Parse(
Value.Replace(" ", ""),
NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint
| NumberStyles.AllowCurrencySymbol
);
وهذا ينبغي أن تفعل خدعة:
string money = "$1,250.00";
money = money.Replace('$',' ');
decimal test = Convert.ToDecimal(money);