返回字符串中存在的第一个整数



我正在尝试解决来自 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'。

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

你们有什么想法如何解决吗?

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

使用此处编写的内容以替换所有字符串

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

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

这应该有效:

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;
}

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

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'));

这是我对这个问题的解决方案:

const parseFirstInt = str => {
for (let i = 0; i < str.length; i++) {
let temp = str.substr(i)
let result = parseInt(temp);
if (!(Number.isNaN(result))) {
return result;
}
}
return NaN
}

最新更新