需要从字符串中获取数字值

时间:2016-01-20 15:07:51

标签: javascript jquery

我有一个字符串,我从一个Jquery选择器.html获得 示例

<span class="currency">$</span>"&nbsp;477,000.00"

我想获得477000.00的值,以便我可以将其作为一个数字用于某些计算。

我尝试了一个parseInt并返回Nan。

以下是我选择的代码:

这是我的实际代码:

function getSystemPrice() {
    var currentSystemPrice = $("#bom-div-content table tbody tr td").html();
    currentSystemPrice = parseInt(currentSystemPrice);
    $("#SYSTEM_PRICE_TILES_ONLY").val(currentSystemPrice);
}

4 个答案:

答案 0 :(得分:3)

尝试:

&#13;
&#13;
key
&#13;
var string = '<span class="currency">$</span>"&nbsp;477,000.00"';
var output = parseFloat(string.match(/([\d,.]+\.)/)[1].replace(/,/g, ''));
document.getElementById('output').innerHTML = output;
&#13;
&#13;
&#13;

<强>更新

&#13;
&#13;
<div id="output"></div>
&#13;
var string = '<span class="currency">$</span>"&nbsp;477,000.00"';
var string2 = '<span class="currency">$</span>"&nbsp;12.477.000,00"';
var re = /((?:\d{1,3}[,.]?)+)[,.](\d{2})/;
var m = string.match(re);
var output = document.getElementById('output');
output.innerHTML += parseFloat(m[1].replace(/[,.]/g, '') + '.' + m[2]) + '\n';
m = string2.match(re);
output.innerHTML += parseFloat(m[1].replace(/[,.]/g, '') + '.' + m[2]);
&#13;
&#13;
&#13;

正则表达式解释:

  • <pre id="output"></pre>整个用括号括起来,所以它捕获了整个事物(最后一个逗号或点之前的数字)
  • ( (?: non capturing group \d{1,3} 1 to 3 digits [,.]? optional comma or dot )+ at least one of those )最后一个逗号或点(未捕获)
  • [,.]捕获与最后2位匹配的群组

答案 1 :(得分:0)

您获得的可能值是多少?如果你总是得到“$”,你可以在; str.split(“;”)上拆分字符串。如果你知道数字总是字符串的最后一部分,你必须从最后选择字符(使用例如str.slice(-1),当你得到一个没有意义的字符作为数字时停止。

答案 2 :(得分:0)

试试这个。

function getSystemPrice() {
    var currentSystemPrice = $("#bom-div-content table tbody tr td").html();
        currentSystemPrice = currentSystemPrice.replace("$","");  //Here you take out the $
        currentSystemPrice = currentSystemPrice.replace(" ","");  //Here you take out white spaces
        currentSystemPrice = parseFloat(currentSystemPrice);  //This way you will have decs if its needed
    $("#SYSTEM_PRICE_TILES_ONLY").val(currentSystemPrice);
    return true;
}

答案 3 :(得分:0)

您是要将数字解析为int还是float,因为有两种方法可以执行此操作。

要解析为int,您应该将第二个参数传递给parseInt,即基数(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt)。

parseInt("10", 10);

这是因为大多数实现使用10作为默认基数,但不是全部,所以它可能是后来线路中的一个微妙的错误来源。

将jQuery取出并简单地将数字作为字符串读取并将其转换为浮点数,我确实喜欢这样:

var tmp = "<span class='currency'>$</span>&nbsp;477,000.00".split("&nbsp;")[1];
parseFloat(tmp.split(",").reduce((a, b) => a + b ));

如前所述,您当然可以使用parseInt而不是parseFloat,具体取决于您想要的数据的确切性质。

不确定它是否是您正在寻找的解决方案但是我想我是否可以使用reduce来完成它,我不介意承认我也在这里学到了一些东西。< / p>