Уберите HTML-знак фунта из строки, чтобы создать номер - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь создать скрипт, который добавляет две строки, которые извлекаются из базы данных. Сценарий извлекает данные правильно, но строки содержат знак фунта (£) - поэтому числа не будут складываться вместе, поскольку они фактически являются текстовыми строками.

var subtotal = "£25";
var shipping = "£5";

var total = subtotal + shipping;

Как я могу лишить фунтзнаки из кода, чтобы цифры складывались?

Ответы [ 3 ]

0 голосов
/ 10 октября 2019

Вы можете удалить все символы, кроме цифр и точек из строки, используя метод замены строки с регулярным выражением, а затем вызвать parseFloat для результата, чтобы привести его к числу.

const toNumber = n => parseFloat(n.replace(/[^.0-9]/g, ''));
var subtotal = "£25";
var shipping = "£5";

var total = toNumber(subtotal) + toNumber(shipping);

console.log(total);
0 голосов
/ 10 октября 2019

Спасибо всем за помощь. Я достиг этого сейчас, как показано ниже:

const toNumber = n => parseFloat(n.replace(/[^.0-9]/g, ''));
var subtotal = "£25.53";
var shipping = "£5.30";

var total = toNumber(subtotal) + toNumber(shipping);

document.getElementById("demo").innerHTML =
"The total of your order is: " + total.toFixed(2);

Возвращает правильную сумму 30,83!

0 голосов
/ 10 октября 2019

простой подход может быть

var total = parseFloat(subtotal.replace(/[^.0-9]g/,'')) + parseInt(shipping..replace(/[^.0-9]g/,''));

var subtotal = "£19.99";
var shipping = "£3.95";
var total = parseFloat(subtotal.replace(/[^.0-9]/g,'')) + parseFloat(shipping.replace(/[^.0-9]/g,''));

console.log(total);
console.log(total.toFixed(2)); // to round to 2 decimal places
...