检查输入字符串是否包含(有符号的)数字。
检查输入字符串是否包含(有符号的)数字。
我想检查我的输入字符串是否包含数字,并显示一个包含这些数字的数组。该数字由一个可选的符号(-
或+
)、一个或多个连续的数字和一个可选的小数部分组成。小数部分由一个点.
后面跟着零个或多个数字组成。
例如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);
问题的出现原因是需要检查输入字符串是否包含一个(带符号的)数字。解决方法是使用正则表达式来匹配字符串中的数字。
可以使用以下代码来实现:
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`,我们解决了结果重复打印的问题。现在,代码将正确地输出匹配到的数字数组。