Ошибка при развертывании приложения SAPUI5 в репозитории ABAP

Терминология, используемая в этом ответе:
  • Соответствие указывает результат запуска вашего шаблона RegEx против вашей строки следующим образом: someString.match(regexPattern).
  • Совпадающие шаблоны показывают все согласованные части входной строки, которые все находятся внутри массива совпадений. Это все экземпляры вашего шаблона внутри входной строки.
  • Совпадающие группы указывают на то, что все группы пойманы, определенные в шаблоне RegEx. (Шаблоны в круглых скобках, например: /format_(.*?)/g, где (.*?) будет подобранной группой.) Они находятся в согласованных шаблонах.

Описание

To получить доступ к сопоставленным группам , в каждом из сопоставленных шаблонов вам нужна функция или что-то похожее на итерацию по совпадению . Есть несколько способов сделать это, как показывают многие другие ответы. Большинство других ответов используют цикл while для повторения всех сопоставленных шаблонов , но я думаю, что мы все знаем потенциальные опасности с этим подходом. Необходимо сопоставлять с new RegExp(), а не только с самим шаблоном, который упоминается только в комментарии. Это связано с тем, что метод .exec() ведет себя аналогично функции генератора - , он останавливается каждый раз, когда имеется совпадение , но сохраняет его .lastIndex, чтобы продолжить оттуда следующий .exec() вызов.

Примеры кода

Ниже приведен пример функции searchString, которая возвращает Array всех совпадающих паттернов , где каждый match является Array со всеми содержащими сопоставленными группами . Вместо использования цикла while я предоставил примеры, используя как функцию Array.prototype.map(), так и более эффективный способ - используя простой for -loop.

Краткие версии (меньше кода, более синтаксические сахар]

Они менее эффективны, поскольку они в основном реализуют forEach -loop вместо более быстрого for -loop.

// Concise ES6/ES2015 syntax
const searchString = 
    (string, pattern) => 
        string
        .match(new RegExp(pattern.source, pattern.flags))
        .map(match => 
            new RegExp(pattern.source, pattern.flags)
            .exec(match));

// Or if you will, with ES5 syntax
function searchString(string, pattern) {
    return string
        .match(new RegExp(pattern.source, pattern.flags))
        .map(match =>
            new RegExp(pattern.source, pattern.flags)
            .exec(match));
}

let string = "something format_abc",
    pattern = /(?:^|\s)format_(.*?)(?:\s|$)/;

let result = searchString(string, pattern);
// [[" format_abc", "abc"], null]
// The trailing `null` disappears if you add the `global` flag

Исполняемые версии (больше кода, меньше синтаксический сахар)

// Performant ES6/ES2015 syntax
const searchString = (string, pattern) => {
    let result = [];

    const matches = string.match(new RegExp(pattern.source, pattern.flags));

    for (let i = 0; i < matches.length; i++) {
        result.push(new RegExp(pattern.source, pattern.flags).exec(matches[i]));
    }

    return result;
};

// Same thing, but with ES5 syntax
function searchString(string, pattern) {
    var result = [];

    var matches = string.match(new RegExp(pattern.source, pattern.flags));

    for (var i = 0; i < matches.length; i++) {
        result.push(new RegExp(pattern.source, pattern.flags).exec(matches[i]));
    }

    return result;
}

let string = "something format_abc",
    pattern = /(?:^|\s)format_(.*?)(?:\s|$)/;

let result = searchString(string, pattern);
// [[" format_abc", "abc"], null]
// The trailing `null` disappears if you add the `global` flag

Мне еще предстоит сравнить эти альтернативы с ранее упомянутыми в других ответах, но я сомневаюсь, что этот подход менее эффективен и менее безопасен, чем другие.

0
задан Mahdi J.Ansari 20 March 2019 в 09:08
поделиться

1 ответ

как описано в этой теме

Каждый файл в многоуровневом репозитории имеет основной язык. Основной язык такой же, как язык входа пользователя, который создал файл (например, вариант). Если файл будет изменен позже, вы можете изменить только файл на этом языке .

Итак, если приложение было развернуто в английской версии chrome, то вы можете развернуть manifest-bundle.zip только из english хром версия

0
ответ дан anatoli 20 March 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: