我有一个字符串,我从一个Jquery选择器.html获得 示例
<span class="currency">$</span>" 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);
}
答案 0 :(得分:3)
尝试:
key
&#13;
var string = '<span class="currency">$</span>" 477,000.00"';
var output = parseFloat(string.match(/([\d,.]+\.)/)[1].replace(/,/g, ''));
document.getElementById('output').innerHTML = output;
&#13;
<强>更新强>:
<div id="output"></div>
&#13;
var string = '<span class="currency">$</span>" 477,000.00"';
var string2 = '<span class="currency">$</span>" 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;
正则表达式解释:
<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> 477,000.00".split(" ")[1];
parseFloat(tmp.split(",").reduce((a, b) => a + b ));
如前所述,您当然可以使用parseInt而不是parseFloat,具体取决于您想要的数据的确切性质。
不确定它是否是您正在寻找的解决方案但是我想我是否可以使用reduce来完成它,我不介意承认我也在这里学到了一些东西。< / p>