猿问

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(":");


  }

}


慕妹3242003
浏览 203回答 3
3回答

元芳怎么了

您可以使用正则表达式Mem:\s*(\d+)将第一个数字Mem:和未知数量的空格获取到捕获组。然后用于match获取位于 index 的捕获组1。const str = `Swap:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;Mem:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 31&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;27&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;18`const [, number] = str.match(/Mem:\s*(\d+)/)console.log(number)

宝慕林4294392

提供 'Mem' 字符串(大概来自您的lines数组),就这么简单:const str = "Mem:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 31122&nbsp; &nbsp; &nbsp; &nbsp;27&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;18";const subStr = str.split(':')[1].trim();const num = subStr.substr(0,subStr.indexOf(' '));console.log(num);如果问题中没有确定其他约束,我会根据需要更改答案。

汪汪一只猫

var lines = 'Swap:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; \nMem:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 31&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;27&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;18',&nbsp; &nbsp; firstNum = lines.split('\n').find(s => s.includes('Mem')).match(/\d+/);console.log(firstNum[0]);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答