检查输入字符串是否包含(有符号的)数字。

10 浏览
0 Comments

检查输入字符串是否包含(有符号的)数字。

我想检查我的输入字符串是否包含数字,并显示一个包含这些数字的数组。该数字由一个可选的符号(-+)、一个或多个连续的数字和一个可选的小数部分组成。小数部分由一个点.后面跟着零个或多个数字组成。

例如f2('a1 12 13.b -14.5+2'):返回[1, 12, 13, -14.5, 2]

我尝试了这里的一个回答中的代码

function f2(input) {
  let str = String(input);
  for (let i = 0; i < str.length; i++) {
    console.log(str.charAt(i));
    if (!isNaN(str.charAt(i))) {
      //如果字符串是一个数字,执行以下操作                
      return str.charAt(i);
    }
  }
}
let result = f2("a1 12 13.b -14.5+2");
console.log(result);

0
0 Comments

问题的出现原因是需要检查输入字符串是否包含一个(带符号的)数字。解决方法是使用正则表达式来匹配字符串中的数字。

可以使用以下代码来实现:

function f2(input) {
  let str = String(input);
  let result = str.match(/\-?\d+\.\d+|\-?\d+/g)
  return result
}
let numbers = f2("a1 12 13.b -14.5+2");
console.log(numbers);

这段代码将输入字符串转换为字符串类型,并使用正则表达式`\-?\d+\.\d+|\-?\d+`来匹配字符串中的数字。匹配到的结果将存储在`result`变量中,并作为函数的返回值。

在这段代码中,我们发现了一个问题,即结果被重复打印出来。为了解决这个问题,我们可以选择为结果变量选择一个不同的名称,如下所示:

function f2(input) {
  let str = String(input);
  let numbers = str.match(/\-?\d+\.\d+|\-?\d+/g)
  return numbers
}
let numbersArray = f2("a1 12 13.b -14.5+2");
console.log(numbersArray);

通过将结果变量更名为`numbers`,我们解决了结果重复打印的问题。现在,代码将正确地输出匹配到的数字数组。

0