Javascript Mil Separador / formato de cadena [duplicado]
¿Existe alguna función en Javascript para formatear números y cadenas?
Estoy buscando una forma de separar mil para cadenas o números... (Como String.Format en c#)
La referencia citada en la respuesta original a continuación era incorrecta. Hay una función incorporada para esto, que es exactamente lo que Kaiser sugiere a continuación:toLocaleString
Entonces puedes hacer:
(1234567.89).toLocaleString('en') // for numeric input
parseFloat("1234567.89").toLocaleString('en') // for string input
La función implementada a continuación también funciona, pero simplemente no es necesaria.
(Pensé que tal vez tendría suerte y descubriría que era necesario en 2010, pero no. Según esta referencia más confiable , toLocaleString ha sido parte del estándar desde ECMAScript 3rd Edition [1999], lo que creo que significa que habría sido compatible desde IE 5.5.)
Respuesta original
Según esta referencia, no existe una función integrada para agregar comas a un número. Pero esa página incluye un ejemplo de cómo codificarla usted mismo:
function addCommas(nStr) {
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
Editar: para ir al revés (convertir cadena con comas en número), puede hacer algo como esto:
parseFloat("1,234,567.89".replace(/,/g,''))
Si se trata de localizar separadores de miles, delimitadores y separadores decimales, utilice lo siguiente:
// --> numObj.toLocaleString( [locales [, options] ] )
parseInt( number ).toLocaleString();
Hay varias opciones que puedes usar (e incluso configuraciones regionales con alternativas):
number = 123456.7089;
result = parseInt( number ).toLocaleString() + "<br>";
result += number.toLocaleString( 'de-DE' ) + "<br>";
result += number.toLocaleString( 'ar-EG' ) + "<br>";
result += number.toLocaleString( 'ja-JP', {
style : 'currency',
currency : 'JPY',
currencyDisplay : 'symbol',
useGrouping : true
} ) + "<br>";
result += number.toLocaleString( [ 'jav', 'en' ], {
localeMatcher : 'lookup',
style : 'decimal',
minimumIntegerDigits : 2,
minimumFractionDigits : 2,
maximumFractionDigits : 3,
minimumSignificantDigits : 2,
maximumSignificantDigits : 3
} ) + "<br>";
var el = document.getElementById( 'result' );
el.innerHTML = result;
<div id="result"></div>
Detalles en la página de información de MDN .
Editar: El comentarista @Me gusta Serena agrega lo siguiente:
Para admitir navegadores con una configuración regional distinta del inglés donde todavía queremos el formato en inglés, utilice
value.toLocaleString('en')
. También funciona para punto flotante.