如何从字符串中获取数字到数组中

时间:2017-11-17 12:26:12

标签: javascript arrays

我有像你这样的字符串 '156p1m2s10c'
'15p13m22s3c'
'1644p31m142s3c'

我想分别得到所有的数字。

数组也可以像:

156  
--
1
--
2
--
33

如何使用Jquery做到这一点。我尝试过下面提到的代码,但一切都出错了。

function myFunction() {
    var str = "156p1m2s33c";
    var prodId = cust_code.substring(0, url.indexOf('p'));
    var metalId = cust_code.substring(url.indexOf('p') + 1, url.indexOf('m'));
    var prodId = cust_code.substring(url.indexOf('m') + 1, url.indexOf('s'));
}

代码有什么问题?

1 个答案:

答案 0 :(得分:8)

您可以将String#match与RegExp一起使用。如果需要,您可以使用Array#map将字符串转换为数字。

var str = '156p1m2s33c';

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

console.log(numbers);

您的代码有什么问题:

  1. cust_codeurl不属于该功能。请参阅str
  2. 您声明prodId两次。
  3. 您不处理“s”和“c”之间的数字。
  4. 您正在进行大量重复搜索(p的索引,m的索引等)。
  5. 您的函数不会返回任何内容,也不会对结果执行任何操作。
  6. 使用正则表达式更适合这种情况。
  7. function myFunction() {
        var str = "156p1m2s33c";
        var pI = str.indexOf('p');
        var mI = str.indexOf('m');
        var sI = str.indexOf('s');
        var cI = str.indexOf('c');
        
        var prodId = str.substring(0, pI);
        var metalId = str.substring(pI + 1, mI);
        var anotherId1 = str.substring(mI + 1, sI);
        var anotherId2 = str.substring(sI + 1, cI);
        
        return [prodId, metalId, anotherId1, anotherId2];
    }
    
    console.log(myFunction());