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

Vik*_*ant -5 javascript arrays

我有类似的字符串
'156p1m2s10c'
'15p13m22s3c'
'1644p31m142s3c'

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

数组也可以像:

156  
--
1
--
2
--
33
Run Code Online (Sandbox Code Playgroud)

如何使用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'));
}
Run Code Online (Sandbox Code Playgroud)

代码有什么问题?

Ori*_*ori 8

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

var str = '156p1m2s33c';

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

console.log(numbers);
Run Code Online (Sandbox Code Playgroud)

您的代码有什么问题:

  1. cust_code并且url不是该功能的一部分.参考str.
  2. 你宣布prodId两次.
  3. 您不处理"s"和"c"之间的数字.
  4. 你正在进行大量的重复搜索(p的索引,m的索引等).
  5. 您的函数不会返回任何内容,也不会对结果执行任何操作.
  6. 使用正则表达式更适合这种情况.

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());
Run Code Online (Sandbox Code Playgroud)