كيف يمكنني تقبل سلاسل مثل "$ 1،250.00" وتحويله إلى عشري في C #؟

StackOverflow https://stackoverflow.com/questions/1210553

  •  06-07-2019
  •  | 
  •  

سؤال

وكيف يمكن أن أقبل سلاسل مثل "$ 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
);

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

وهذا ينبغي أن تفعل خدعة:


      string money = "$1,250.00";
      money = money.Replace('$',' ');
      decimal test = Convert.ToDecimal(money);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top