0

我正在尝试解决来自 jshero.net 的挑战。挑战在于:

编写一个函数 parseFirstInt,它接受一个字符串并返回字符串中存在的第一个整数。如果字符串不包含整数,则应该得到 NaN。parseFirstInt('No. 10') 应该返回 10 并且 parseFirstInt('Babylon') 应该返回 NaN。我想出的解决方案是:

function parseFirstInt(num){
let input=parseInt();
if(Number.isNaN(num)){
return NaN} else {
return num[0]}

}

但它不起作用。它返回以下错误:

parseFirstInt('No. 10') 不返回 10,而是返回 'N'。

测试错误!更正错误并重新运行测试!

你们有任何想法如何解决它?

4

3 回答 3

0

使用/[-+]?[0-9]+/gin match()函数,您可以找到并解析字符串中存在的第一个整数。

function parseFirstInt(num){
  const ints = num.match(/[-+]?[0-9]+/g)
  return ints ? Number(ints[0]): NaN
}

console.log(parseFirstInt('No. 10'));
console.log(parseFirstInt('NaN'));
console.log(parseFirstInt('No. -10'));

于 2020-06-23T12:43:00.473 回答
0

这应该工作:

    function parseFirstInt(text){
    
       for(let i=0;i<text.length;i++){
          if(text.charCodeAt(i)<58 && text.charCodeAt(i)>47){
              return text[i];
           } 
       }
       return NaN;
    }
于 2020-06-23T12:25:21.083 回答
0

我肯定会为此使用正则表达式。

使用这里写的内容来替换所有字符串

使用 JavaScript 获取字符串中的第一个整数

然后,我会检查长度是否为 0。如果它返回 NaN,如果不是,则 parseInt

于 2020-06-23T11:58:03.713 回答