Пользовательская функция Google Sheet не возвращает строку - PullRequest
1 голос
/ 06 апреля 2020

Я новичок в сценариях Google Sheet.

Я пишу код, чтобы отделить шестые компоненты от длинного текста, основанного на соглашении об именах. Текст состоит из 6 частей, разделенных подчеркиванием. Однако мой код ничего не возвращает

  function RetailerStrip(account) {
  var count = 0;
  var retname = "";
  var retcount = 0;
  for(var i = 0, len = account.length; i < len; i++) {
        if (account[i] =="_") {
            ++count;
            }
        if (count == 5) {
            retname[retcount]= account[i];
            ++retcount;
            }
    }
  return retname;
}

Затем я вызываю эту функцию с листа, как показано ниже

=RetailerStrip("abc_def_ghi_jkl_mno_pqr")

Когда я пытался объявить 'retname' как массив, функция вернула требуемый текст (пятый компонент), но текст был распределен по нескольким ячейкам с символом в каждой ячейке, а не как одна строка в одной ячейке

var retname = [];

Пожалуйста, помогите

1 Ответ

4 голосов
/ 06 апреля 2020

Вы можете попробовать это:

function RetailerStrip(str) { return str.split('_')[5]; }

Метод split() создает массив.


Но если вы предпочитаете придерживаться метода итерации строк, вы можете используйте это:

function RetailerStrip(account) {
  var count = 0;
  var retname = []; // Array
  var retcount = 0;
  for (var i = 0, len = account.length; i < len; i++) {
    if (account[i] =="_") {
      ++count;
    }
    if (count == 4) {
      retname[retcount]= account[i];
      ++retcount;
    }
  }
  retname.shift(); // To get rid of the underscore from the array
  var retnameString = retname.join(''); // To convert the array to a string
  return retnameString;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...