جافاسكريبت - كيفية تحويل سلسلة محلية (عملة) مرة أخرى إلى رقم؟
أنا أستخدم toLocaleString() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString للتحويل إلى تنسيق سلسلة دولارات، لكنني أواجه مشكلة في عكس العملية. في حالتي، التحويل مرة أخرى إلى سنتات.
dollarString.split('$')[1] * 100 يتعرض للخلل بمجرد أن يحتوي النص على ,.
هل توجد طريقة أفضل للتعامل مع هذا، بدلاً من المرور عبر السلاسل وإزالة الفواصل؟
ماذا لو انتهى بي الأمر باستخدام عملات أخرى. ألا أستطيع التحويل من وإلى أي عملة إلى تمثيل سنتات حتى أتمكن من القيام بالحسابات، ثم العودة إلى بعض المناطق المحلية؟
الإجابة رقم 1
بافتراض أنك في موقع يستخدم النقطة كفاصل عشري، يمكنك استخدام شيء مثل هذا:
var dollarsAsFloat = parseFloat(dollarString.replace(/[^0-9-.]/g, ''));
يستخدم ما ورد أعلاه تعبيرًا نمطيًا لإزالة كل شيء ما عدا الأرقام والعشرية. ستقوم دالة parsefloat بالباقي.
كن حذرًا فقط. بعض الدول لا تستخدم الفاصلة والنقطة العشرية كما تفعل أنت! من المحتمل أن يكون من الأفضل الاحتفاظ بالمبلغ المالي في متغير من نوع float، وتنسيقه فقط عند طباعته فعليًا.
الإجابة رقم 2
كما اقترح الآخرون، تحتاج إلى إزالة (,) من النص.
dollarString.split('$')[1].replace(/\,/g,'') * 100
في حال كان dollarString يحتوي فقط على قيم مثل $xx,xxx,xxx$xx,xxx,xxx، فيمكنك ببساطة إزالة كل (,) ثم القيام بالتقسيم
dollarString.replace(/\,/g,'').split('$')[1] * 100
