我有以下字符串,我需要从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(":");
}
}
答案 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]);