我是 stackoverflow 的新手,希望得到一些建议来帮助我解决这个问题。 我有两个字符串,我想从中提取数字
String 1 = "12.3,Name1,3,4,Name2,35,Name3"
返回[12.3,3,4,35]
这是所需的结果。
String 2 = "12.3,22,Q"
返回[12.322]
哪个是错误的结果,应该是[12.3,22]
我已经对我的代码进行了评论,并附上了完成任务所采取的步骤。 再次非常感谢您提前提供的建议和帮助。
这是我的代码的副本:
function extractNumbers(str) {
//Use replace() to replace all instances of letters/alpha*
let onlyNumbersString = str.replace(/[a-z]/ig, '');
//remove "," using replace()*
onlyNumbersString = onlyNumbersString.replace(",", "");
//Create an array of numbers*
let arrayOfNumbers = onlyNumbersString.split(',');
let result = arrayOfNumbers.map((x) => parseFloat(x))
console.log(arrayOfNumbers)
console.log(result);
const filtered = result.filter(function(e) {
return e
})
console.log(filtered)
}
let numbers = "12.3,Name1,3,4,Name2,35,Name3" //returns [12.3,3,4,35]
//"12.3,22,Q" returns [12.322]*
extractNumbers(numbers)
最佳答案
您可以简单地拆分,
并检查它是否是有效的数字
function extractNumbers(str) {
let onlyNumbersString = str.split(',').filter(v => /^\d+(\.\d+)?$/.test(v))
console.log(onlyNumbersString)
}
let numbers = "12.3,Name1,3,4,Name2,35,Name3" //returns [12.3,3,4,35]
//"12.3,22,Q" returns [12.322]*
extractNumbers(numbers)
extractNumbers('12.3,22,Q')
如果您不想使用正则表达式,可以使用isNaN
let onlyNumbersString = str.split(',').filter(v => v.trim() && !isNaN(v))
关于javascript - 有关如何解决使用 JavaScript 从字符串中仅提取数字的问题的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73166314/