【问题标题】:Extract number from string JavaScript从字符串 JavaScript 中提取数字
【发布时间】:2017-07-20 19:45:03
【问题描述】:

有人知道在 JavaScript 中从字符串中提取数字的方法吗?

示例:

1 banana + 1 pineapple + 3 oranges

我的意图是将结果保存在数组或 JSON 或其他内容中。

结果:

[1,1,3]

【问题讨论】:

    标签: javascript numbers extract


    【解决方案1】:

    使用String.prototype.match() 和parseInt():

    const s = "1 banana + 1 pineapple + 3 oranges";
    const result = (s.match(/\d+/g) || []).map(n => parseInt(n));
    
    console.log(result);

    【讨论】:

    • 如果字符串不包含数字,此解决方案将中断。 @Amrutha 的回答是最安全的,并不严格假设字符串必须包含数字。
    • @raychz 更新了我的答案,以解决字符串不包含数字的情况。您推荐的 Amrutha 解决方案根本不提取数字,而是提取数字字符串。
    • 感谢更新!看来,您现在有了最好的解决方案。
    【解决方案2】:

    使用这个正则表达式

    • / -> 开始
    • \d+ -> 数字
    • /g -> end 和 g 用于全局匹配

    var str="1 banana + 1 pineapple + 3 oranges",mats=[];
    str.match(/\d+/g).forEach(function(i,j){mats[j]=parseInt(i);});
    console.log(mats);

    【讨论】:

    • 谢谢,这个方法完全符合我的用例。
    • 随时@LouiseGodec
    • 这和 Robby 的回答是正确的。因此,将其中任何一个标记为答案将对未来的访问者有所帮助。
    • 如果字符串不包含数字,此解决方案将中断。 @Amrutha 的回答是最安全的,并不严格假设字符串必须包含数字。
    【解决方案3】:
    var result= "1 banana + 1 pineapple + 3 oranges";
    result.match(/[0-9]+/g)
    

    【讨论】:

      猜你喜欢
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多