【问题标题】:Extract numbers from a string using javascript使用javascript从字符串中提取数字
【发布时间】:2013-07-25 07:42:29
【问题描述】:

我想通过 javascript/jquery 从以下字符串中提取数字:

"ch2sl4"

问题是字符串也可能是这样的:

"ch10sl4"

或者这个

"ch2sl10"

我想将 2 个数字存储在 2 个变量中。 有什么方法可以使用match 来提取"sl" 之前和之后的数字吗? match 甚至是进行提取的正确函数吗?

谢谢

【问题讨论】:

    标签: javascript jquery string match extract


    【解决方案1】:

    是的,match 是要走的路:

    var matches = str.match(/(\d+)sl(\d+)/);
    var number1 = Number(matches[1]);
    var number2 = Number(matches[2]);
    

    【讨论】:

      【解决方案2】:

      如果字符串总是看起来像这样:"ch[num1]sl[num2]",你可以很容易地得到数字,而不需要像这样的正则表达式:

      var numbers = str.substr(2).split('sl');
      //chop off leading ch---/\   /\-- use sl to split the string into 2 parts.
      

      在 "ch2sl4" 的情况下,numbers 将如下所示:["2", "4"],将它们强制转换为如下数字:var num1 = +(numbers[0]) 或 numbers.map(function(a){ return +(a);}。

      如果字符串部分是可变的,这会一举搞定:

      var str = 'ch2fsl4';
      var numbers = str.match(/[0-9]+/g).map(function(n)
      {//just coerce to numbers
          return +(n);
      });
      console.log(numbers);//[2,4]
      

      【讨论】:

      • 感谢您的回答。我认为split() 也可以。
      【解决方案3】:

      作为替代方案,只是为了展示如何以多种不同方式实现目标

      var str = "ch2sl10";
      var num1 = +(str.split("sl")[0].match(/\d+/));
      var num2 = +(str.split("sl")[1].match(/\d+/));
      

      【讨论】:

        【解决方案4】:

        试试下面的代码

        var tz = "GMT-7";
        var tzOff = tz.replace( /[^+-\d.]/g, '');
        alert(parseInt(tzOff));
        

        【讨论】:

        • 请考虑添加至少一些词来解释此代码 sn-p 为何以及如何回答 OP 问题
        • 这不能回答 OP 的用例。它只会提取一个数字作为开始
        猜你喜欢
        • 1970-01-01
        • 2017-07-20
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多