Извлекать строки как массив из строки, используя JavaScript - PullRequest
0 голосов
/ 22 января 2019

У меня есть строка

make -j128

Мне нужно извлечь -j128 из этой строки.

Теперь, почему мне нужен массив строк в качестве вывода, у меня естьСитуация, когда я получу строку как

repo sync -j32 && make -j128

В этом случае мне нужно получить -j32 и -j128

Итак, вывод дляпервый случай будет [- j128] , а второй случай будет [- j32, -j128]

И конечный результат, который я хочу, это числа без -j, которыеэто [128] и [32,128] , с которыми я могу справиться, удалив -j спереди.Если вы, ребята, думаете, почему я не могу просто извлечь цифры в самом начале.Для этого есть причина, так как строка может быть такой же

repo blah blah 123 blah -j32 blah 3 blah 

Где мне нужно только 32 , которая начинается с -j

Я не могу найти решения для этого, даже после того, как многие прибегают к поиску в Google, потому что я не настолько хорош, любая помощь будет оценена, Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вы можете использовать следующее регулярное выражение, чтобы сопоставить все числа с префиксом -j:

/-j(\d+)/g

А затем используйте .exec, чтобы сопоставить все группы и поместить их в массив.

См. Рабочий пример ниже:

const str = "repo sync -j32 && make -j128";
let nums = [];
let regex = /-j(\d+)/g;
while(match = regex.exec(str)) {
  nums.push(+match[1]);
}
console.log(nums);
0 голосов
/ 22 января 2019

Вот простое решение с использованием String.prototype.match():

const s = 'repo sync -j32 && make -j128';
const re = /-j\d+/g

const result1 = s.match(re);
const result2 = result1.map(x => +x.replace(/\D/g, ''));

console.log(result1);
console.log(result2);

Здесь

  • result1 будет массивом всех подстрок, которые начинаются с -j, за которым следует любое количество цифр.
  • result2 - это тот же массив, в котором удалены все нецифровые цифры, а значения преобразованы в числа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...