если string.match () не совпадает, почему выполнение скрипта приложений Google отменяется? - PullRequest
1 голос
/ 05 марта 2020

если я использую следующую функцию в Google Sheets, она не возвращает значение "not found". Журналы говорят мне: «Выполнение отменено».

Это происходит в строке:

var found = text.match(re);

Если я изменю searchText на «ab c», он будет работать как шарм.

function example()
{
  var text = "abc cba";
  var searchText = "abcd";

  var re = new RegExp(searchText,"g");

  var found = text.match(re);

  if (found === undefined) { 
    return "not found";
  }
  else {
    return found;
  }
} 

Почему выполнение сценария отменено и как я могу предотвратить это поведение, не используя дважды регулярное выражение, например, используя text.search (re) в сочетании с if до совпадения ( ) ?

1 Ответ

1 голос
/ 05 марта 2020

Причина:

Возвращаемое значение string.match,

Массив, содержимое которого зависит от наличия или отсутствия глобального флага (g), или null если совпадений не найдено.

и

null !== undefined

Таким образом, когда значение NULL, оператор else выполняется и возвращает значение NULL. на лист. «Отмена выполнения» не имеет значения и, вероятно, из старых журналов выпуск

Решение:

Используйте ноль для сравнения возврата значение.

Фрагмент:

if (found === null) { 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...