如何在JavaScript中将字符串转换为整数

2363

如何在JavaScript中将字符串转换为整数?


5
这个页面底部有一张非常好的表格,比较了不同的转换方法:https://medium.com/@nikjohn/cast-to-number-in-javascript-using-the-unary-operator-f4ca67c792ce - John Gilmer
1
在没有提问者的澄清下,这个问题可以被解释为将任何字符串转换为数字,即将“dog”转换为数字(当然可以做到)。 - Daniel Carrera
1
上钩了:@DanielCarrera...然而,这里没有人以那种方式解释问题。可能是因为如果那是目标,它很可能会用不同的措辞表达。毕竟,这样做的过程(“哈希”)从来没有被称为“转换为整数”,至少在我所知道的范围内是这样的。 - ToolmakerSteve
对于非标准区域设置(例如,在fr-FR中,123456789.123123 456 789,12请参见此讨论 - vsync
要解析不同数字系统(例如波斯/法尔斯或阿拉伯语),请参见此帖子此帖子 - Mahozad
32个回答

0

function doSth(){
  var a = document.getElementById('input').value;
  document.getElementById('number').innerHTML = toNumber(a) + 1;
}
function toNumber(str){
  return +str;
}
<input id="input" type="text">
<input onclick="doSth()" type="submit">
<span id="number"></span>


0
这可能不是解析整数的最佳方案,但如果您需要“提取”一个整数,例如:
"1a2b3c" === 123
"198some text2hello world!30" === 198230
// ...

这只适用于整数:

var str = '3a9b0c3d2e9f8g'

function extractInteger(str) {
  var result = 0;
  var factor = 1

  for (var i = str.length; i > 0; i--) {
    if (!isNaN(str[i - 1])) {
      result += parseInt(str[i - 1]) * factor
      factor *= 10
    }
  }

  return result
}

console.log(extractInteger(str))

当然,这种方法也适用于解析整数,但比其他方法慢。
您也可以使用此方法解析整数,并在字符串不是数字时返回NaN,但我不知道为什么要这样做,因为这依赖于parseInt内部,并且parseInt可能更快。

var str = '3a9b0c3d2e9f8g'

function extractInteger(str) {
  var result = 0;
  var factor = 1

  for (var i = str.length; i > 0; i--) {
    if (isNaN(str[i - 1])) return NaN
    result += parseInt(str[i - 1]) * factor
    factor *= 10
  }

  return result
}

console.log(extractInteger(str))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接