Ad
I Am Unable To Convert This JS Function To C#. Can't Find IsNan And || To Replace
Js code is:
var thousand = ',';
var decimal = '.';
var decimalPlaces = 2;
function formatMoney(number, places, symbol, thousand, decimal, Alignment) {
symbol = '$';
number = number || 0;
places = !isNaN(places = Math.abs(places)) ? places : 2;
symbol = symbol !== undefined ? symbol : "$";
if (typeof thousand == 'undefined' || thousand == null) {
thousand = ",";
}
decimal = decimal || ".";
var negative = number < 0 ? "-" : "",
i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
j = (j = i.length) > 3 ? j % 3 : 0;
if (typeof Alignment != 'undefined' && Alignment != null && Alignment.toLowerCase() == "right") {
return negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "") + symbol;
}
else {
return symbol + negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "");
}
}
So i want this code in C# I have tried using Parse as a replacement for isNan but i am unable to do for ||
Ad
Answer
If number
is a nullable (e.g. decimal?
) in your C# code, you can use the null-coalescing operator as replacement for ||
:
number = number ?? 0;
Since C# is a strongly typed language, you won't have to worry about any arbitrary types being passed like in JS. You can declare the places
parameter as int?
and then simply do:
places = places.HasValue ? Math.Abs(places.Value) : 2;
You should also mind, that there are already a lot of built-in functions for standard and custom formatting in C#, including a specific currency format specifier, so you might want to have a look at that.
Example:
static string FormatMoney(decimal number, int places, string symbol, string thousand, string @decimal, int alignment)
{
var nfi = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
nfi.CurrencyGroupSeparator = thousand;
nfi.CurrencyDecimalSeparator = @decimal;
nfi.CurrencyDecimalDigits = places;
nfi.CurrencySymbol = symbol;
nfi.CurrencyPositivePattern = alignment;
return number.ToString("C", nfi);
}
decimal value = 123456.789m;
Console.WriteLine(FormatMoney(value, 2, "$", ",", ".", 0));
// OUTPUT:
// $123,456.79
Ad
source: stackoverflow.com
Related Questions
- → How to update data attribute on Ajax complete
- → October CMS - Radio Button Ajax Click Twice in a Row Causes Content to disappear
- → Octobercms Component Unique id (Twig & Javascript)
- → Passing a JS var from AJAX response to Twig
- → Laravel {!! Form::open() !!} doesn't work within AngularJS
- → DropzoneJS & Laravel - Output form validation errors
- → Import statement and Babel
- → Uncaught TypeError: Cannot read property '__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED' of undefined
- → React-router: Passing props to children
- → ListView.DataSource looping data for React Native
- → Can't test submit handler in React component
- → React + Flux - How to avoid global variable
- → Webpack, React & Babel, not rendering DOM
Ad