javascript - 有关如何解决使用 JavaScript 从字符串中仅提取数字的问题的建议

标签 javascript arrays string extract numeric

我是 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/

相关文章:

javascript - 始终保持所有三个选择元素处于启用状态

javascript - 如何知道 element.style 是从哪里应用到 CSS 中的

javascript - 在Javascript中从数组中删除空元素

c - 结构体中的结构体数组中的 int 数组

c - strcmp 比较下注预定义和接收到的字符串

python - 在Python中对包含数字的字符串列表进行排序

javascript - 谷歌闭包生成的具有高级设置的代码可以被逆向工程吗?

javascript - Rx.Subject 丢失事件

c++ - 我的程序不显示数组的内容。不知道我的程序是否颠倒了字符

python - 如何打印Python字符串的某些部分?