Получить слова в скобках Ext JS 4.2.1 - PullRequest
0 голосов
/ 30 августа 2018

Ниже текст:

"Les quantités vendues dans Agil (84) et Generix (0) ne sont pas cohérentes". 

Я хотел бы получить обе строки 84 и 0 в скобках.

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Вы можете использовать String.prototype.match() и new RegExp(), чтобы получить требуемый результат.

RegExp

  • \ Для символов, которые обычно обрабатываются буквально, означает, что следующий символ особенный и не должен толковаться буквально.
  • ^ Соответствует началу ввода.

  • + Соответствует предыдущему элементу 1 или более раз. Эквивалентно {1,}.

  • \ d Соответствует символу цифры в основном латинском алфавите. Эквивалентно [0-9]

  • (x) Соответствует x и запоминает совпадение. Они называются захватными скобками.

DEMO

const str = "Les quantités vendues dans Agil (84) et Generix (0) ne sont pas cohérentes",
  regex = new RegExp(/\(([^d)]+)\)+/g),
  regexBracket = new RegExp(/[()]/g);

let matches = str.match(regex).join('_');

console.log(matches.replace(regexBracket,'').split('_'));
.as-console-wrapper {max-height: 100% !important;top: 0;}
0 голосов
/ 30 августа 2018

Вы можете использовать объект регулярного выражения для сопоставления текста по шаблону:

Ext.onReady(function(){
    var 
        exp = new RegExp(/\(([^)]+)\)/, 'g'),
        matches,
        numbers = Array();
    while ((matches = exp.exec("Les quantités vendues dans Agil (84) et Generix (0) ne sont pas cohérentes.")) != null) {
        numbers.push(matches[0]);
    }
    console.log(numbers);
});
0 голосов
/ 30 августа 2018

Какое это имеет отношение к ExtJS? В любом случае, вот решение:

let fn = function(str) {
    let arr = [],
        i = -1,
        start = false;
    str.split('').forEach(function(c) {
        if (c === ')') {
            start = false;
        }
        if (start) {
            if (arr[i] === undefined) {
                arr[i] = '';
            }
            arr[i] += c;
        }
        if (c === '(') {
            start = true;
            i++;
        }
    });
    return arr;
};

console.log(fn('Les quantités vendues dans Agil (84) et Generix (1) ne sont pas cohérentes'));
...