【问题标题】:Is there a function for extracting numbers from a string是否有从字符串中提取数字的功能
【发布时间】:2019-09-20 18:13:21
【问题描述】:

我正在尝试找出如何获取字符串中的数字。

我尝试了 Number(string) 函数,但它返回一个 "NaN" ...

例如:

let str = "MyString(50)";

/*Function that return "NaN"*/
let numbers = Number(str);

console.log(numbers);


//Output expected : 50
//Output if get : 50

有人知道为什么“数字”没有返回正确的值或其他方式吗?

感谢您的回答。

【问题讨论】:

  • Number 将尝试将 整个字符串 转换为数字,它不会解析第一次出现的数字。因为MyString 根本不是一个数字,所以你得到的是 NaN。这是有道理的,如果你有"My 4 number 2" - 你期待4、2 还是42?三者的可能性相同。
  • 好的,我刚刚理解了正确的Number 函数用法。在这种情况下,我期待50,但如果得到[5,0],我会处理的。谢谢!
  • 你的号码可以包括什么?它总是整数还是也可以有浮点数?有没有像mystring123some123这样的情况,这种情况需要什么输出?
  • 不,它只能像string(140) 没有分隔的数字......但是使用正则表达式的答案似乎符合我的需要。非常感谢!

标签: javascript string numbers


【解决方案1】:

您可以使用带有正则表达式的String.match 来过滤掉数字,并使用unary + 或Number(str) 或parseInt 来获取数字

let str = "MyString(50)";

let numbers = +str.match(/\d+/);

console.log(numbers);

【讨论】:

  • 我不熟悉正则表达式,我会看看它是如何工作的。如果您有关于它的好文档,我会很乐意阅读它。感谢您的回答
  • 这里是正则表达式的解释 regex101.com/r/U9OTuO/1 更多 RegExp
  • 感谢您的宝贵帮助!
【解决方案2】:

match正则表达式操作用于获取数字。

 var str = "MyString(50)"; 
 var matches = str.match(/(\d+)/);
 
 console.log(matches[0]);

参考此链接了解正则表达式链接 [https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions].

【讨论】:

  • 谢谢,我会为此使用 RegExp。
【解决方案3】:

这里有一个更全面的正则表达式来检测字符串中的各种数字:

/0[bB][01]+| 0[xX][0-9a-fA-F]+ | [+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g;

   binary   |       hex         | sign?      int/float       exponential part?

const matchNumbers = /0[bB][01]+|0[xX][0-9a-fA-F]+|[+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g;

let str = `
Let      -1
us       +2.
start    -3.3
and      +.4
list     -5e-5
some     +6e6
number   0x12345
formats  0b10101  
`;

console.log("the string", str);

const matches = str.match(matchNumbers);

console.log("the matches", matches);

const numbers = matches.map(Number);

console.log("the numbers", numbers);
.as-console-wrapper{top:0;max-height:100%!important}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多