JavaScript:如何捕获字符串中的特定值?

时间:2019-06-02 18:19:01

标签: javascript

我有以下字符串,我需要从Mem:行中捕获31位数字。空间是动态的,所以我无法捕获正确的数字。

字符串:

Swap:            1          0          1        
Mem:            31         27          3          0          1         18

我正在尝试下面的代码,无法继续。

let lines = output.split('\n');
for (var i = 0; i < lines.length; i++) {
  var newArray = lines[i];

  if (newArray.indexOf('Mem:') > -1) {
    let n = newArray.split(":");

  }
}

4 个答案:

答案 0 :(得分:1)

您可以使用正则表达式Mem:\s*(\d+)来获取Mem:之后的第一个数字,以及捕获组中未知数量的空格。然后使用match获取索引为1的捕获组。

const str = `Swap:            1          0          1        
Mem:            31         27          3          0          1         18`

const [, number] = str.match(/Mem:\s*(\d+)/)

console.log(number)

答案 1 :(得分:0)

使用'Mem'字符串(可能来自您的lines数组)来提供,它很简单:

const str = "Mem:            31122       27          3          0          1         18";
const subStr = str.split(':')[1].trim();
const num = subStr.substr(0,subStr.indexOf(' '));

console.log(num);

如果问题中还没有其他约束,我将根据需要更改答案。

答案 2 :(得分:0)

您可以找到该行并获得第一位数字。

var lines = 'Swap:            1          0          1        \nMem:            31         27          3          0          1         18',
    firstNum = lines.split('\n').find(s => s.includes('Mem')).match(/\d+/);

console.log(firstNum[0]);

答案 3 :(得分:0)

var lines = 'Swap:            1          0          1        \nMem:            31         27          3          0          1         18',
    firstNum = lines.split('\n').find(s => s.includes('Mem')).match(/\d+/);

console.log(firstNum[0]);