formato ejemplos ejemplo crear cortar con cadena archivo javascript jquery

ejemplos - split javascript ejemplo



¿Cómo convertir una cadena de moneda a doble con jQuery o Javascript? (14)

// "10.000.500,61 TL" price_to_number => 10000500.61

// "10000500.62" number_to_price => 10.000.500,62

JS FIDDLE: https://jsfiddle.net/Limitlessisa/oxhgd32c/

var price="10.000.500,61 TL"; document.getElementById("demo1").innerHTML = price_to_number(price); var numberPrice="10000500.62"; document.getElementById("demo2").innerHTML = number_to_price(numberPrice); function price_to_number(v){ if(!v){return 0;} v=v.split(''.'').join(''''); v=v.split('','').join(''.''); return Number(v.replace(/[^0-9.]/g, "")); } function number_to_price(v){ if(v==0){return ''0,00'';} v=parseFloat(v); v=v.toFixed(2).replace(/(/d)(?=(/d/d/d)+(?!/d))/g, "$1,"); v=v.split(''.'').join(''*'').split('','').join(''.'').split(''*'').join('',''); return v; }

Tengo un cuadro de texto que tendrá una cadena de moneda que luego necesito convertir esa cadena a un doble para realizar algunas operaciones en ella.

"$ 1,100.00" -> 1100.00

Esto debe ocurrir todo el lado del cliente. No tengo más remedio que dejar la cadena de moneda como una cadena de moneda como entrada, pero necesito convertirla / convertirla en un doble para permitir algunas operaciones matemáticas.


Eliminar todos los puntos / dígitos que no sean

var currency = "-$4,400.50"; var number = Number(currency.replace(/[^0-9.-]+/g,""));


Esta es mi función. Funciona con todas las monedas.

function toFloat(num) { dotPos = num.indexOf(''.''); commaPos = num.indexOf('',''); if (dotPos < 0) dotPos = 0; if (commaPos < 0) commaPos = 0; if ((dotPos > commaPos) && dotPos) sep = dotPos; else { if ((commaPos > dotPos) && commaPos) sep = commaPos; else sep = false; } if (sep == false) return parseFloat(num.replace(/[^/d]/g, "")); return parseFloat( num.substr(0, sep).replace(/[^/d]/g, "") + ''.'' + num.substr(sep+1, num.length).replace(/[^0-9]/, "") ); }

Uso: toFloat("$1,100.00") o toFloat("1,100.00$")



Puedes probar esto

<script type="text/javascript"> var str="$1,112.12"; str = str.replace(",",""); str = str.replace("$",""); document.write(parseFloat(str)); </script>


Sé que esta es una pregunta antigua pero quería dar una opción adicional.

El jQuery Globalize ofrece la posibilidad de analizar un formato específico de cultura a un flotador.

https://github.com/jquery/globalize

Dada una cadena "$ 13,042.00", y Globalize configurada para en-US:

Globalize.culture("en-US");

Puedes analizar el valor flotante de la siguiente manera:

var result = Globalize.parseFloat(Globalize.format("$13,042.00", "c"));

Esto te dará:

13042.00

Y te permite trabajar con otras culturas.


Sé que esta es una pregunta antigua, pero la respuesta de CMS parece tener una pequeña falla: solo funciona si se usa el formato de moneda "." como separador decimal. Por ejemplo, si necesita trabajar con rublos rusos, la cadena se verá así: "1 000,00 frotar".

Mi solución es mucho menos elegante que la de CMS, pero debería hacer el truco.

var currency = "1 000,00 rub."; //it works for US-style currency strings as well var cur_re = //D*(/d+|/d.*?/d)(?:/D+(/d{2}))?/D*$/; var parts = cur_re.exec(currency); var number = parseFloat(parts[1].replace(//D/,'''')+''.''+(parts[2]?parts[2]:''00''));

Suposiciones

  • el valor de la moneda usa notación decimal
  • no hay dígitos en la cadena que no sean parte del valor de la moneda
  • el valor de la moneda contiene 0 o 2 dígitos en su parte fraccionaria *

La expresión regular puede incluso manejar algo como "1,999 dólares y 99 centavos", aunque no es una característica prevista y no debe confiarse en ella.

Espero que esto ayude a alguien.


Sé que has encontrado una solución a tu pregunta, solo quería recomendarte que tal vez veas el siguiente complemento jQuery más extenso para los formatos de número internacional:

Formateador de números internacional


Use una expresión regular para eliminar el formato (dólar y coma), y use parseFloat para convertir la cadena en un número de punto flotante.

var currency = "$1,100.00"; currency.replace(/[$,]+/g,""); var result = parseFloat(currency) + .05;


accounting.js es el camino a seguir. Lo usé en un proyecto y tuve una experiencia muy buena usándolo.

accounting.formatMoney(4999.99, "€", 2, ".", ","); // €4.999,99 accounting.unformat("€ 1.000.000,00", ","); // 1000000

Lo puedes encontrar en GitHub


function NumberConvertToDecimal (number) { if (number == 0) { return ''0.00''; } number = parseFloat(number); number = number.toFixed(2).replace(/(/d)(?=(/d/d/d)+(?!/d))/g, "$1"); number = number.split(''.'').join(''*'').split(''*'').join(''.''); return number; }


var parseCurrency = function (e) { if (typeof (e) === ''number'') return e; if (typeof (e) === ''string'') { var str = e.trim(); var value = Number(e.replace(/[^0-9.-]+/g, "")); return str.startsWith(''('') && str.endsWith('')'') ? -value: value; } return e; }


$ 150.00 Fr. 150.00 € 689.00

He probado para más de tres símbolos de moneda. Usted puede hacerlo para otros también.

var price = Fr. 150.00; var priceFloat = price.replace(/[^/d/.]/g, '''');

La expresión regular anterior eliminará todo lo que no sea un dígito o un punto. Por lo tanto, puede obtener la cadena sin el símbolo de moneda, pero en el caso de "Fr. 150.00", si la consola para la salida, obtendrá el precio como

console.log(''priceFloat : ''+priceFloat); output will be like priceFloat : .150.00

lo que está mal, así que verifica el índice de "." luego dividir eso y obtener el resultado adecuado.

if (priceFloat.indexOf(''.'') == 0) { priceFloat = parseFloat(priceFloat.split(''.'')[1]); }else{ priceFloat = parseFloat(priceFloat); }


jQuery.preferCulture("en-IN"); var price = jQuery.format(39.00, "c");

La salida es: Rs. 39.00

use jquery.glob.js, jQuery.glob.all.js