C# إنشاء رقم مخصص لـ FormFormatInfo لعرض "مجاني" عندما تكون قيمة العملة 0.00 دولار
-
28-09-2019 - |
سؤال
أحتاج إلى عرض عملة في تطبيق ASP.NET MVC الخاص بي ، لكن عندما تكون العملة 0 أود أن تعرض "مجانًا" (مترجمة بالطبع!) بدلاً من 0.00 دولار.
لذلك عندما يكون لدي شيء مثل هذا ...
Decimal priceFree = 0.00;
Decimal priceNotFree = 100.00;
priceFree.ToString("C");
priceNotFree.ToString("C");
الإخراج "0.00 دولار" "100.00 دولار"
أود أن تكون "مجانية" "100.00 دولار"
أتصور أنه يمكنني استخدام. من الواضح أنني أريد إعادة استخدام أكبر قدر ممكن من NumberFormatInfo وتجاوزه فقط عندما يكون الإدخال 0. في هذه الحالة ، يمكنني إرجاع مورد محلي بسيط يحتوي على سلسلة "مجانية".
فكيف أفعل هذا؟
شكرًا
المحلول
أعتقد أن أسهل طريقة للذهاب ستكون طريقة تمديد:
public static string ToPriceString(this decimal value)
{
if (value <= 0m)
return "Free"; // Your localized resource
else
return value.ToString("C");
}
إذا كنت تريد الذهاب مع IFormatProvider
, هناك مثال جيد على MSDN.
نصائح أخرى
يستخدم
.ToString("$###.00;;Free")
ماذا عن طريقة التمديد:
public static string FreeString(this decimal dec)
{
if(dec == 0M)
{
return "Free";
}
else
{
return dec.ToString("C");
}
}
ثم
priceFree.FreeString();
priceNotFree.FreeString();
بدلاً من استخدام iformatprovider مخصص وتمريره في كل مرة ، ماذا عن هذا:
public static class MyFormatter
{
public static string ToFreeString(this decimal d)
{
return d == 0 ? "Free" : d.ToString("d");
}
}
لا تنتمي إلى StackOverflow