Google Apps Script: Как получить левую строку?

Что такое «левая строка» и где это используется?

"Левая строка" – это подстрока, состоящая из первых n символов строки. Это распространенная задача при обработке текста, анализе данных и форматировании информации. Примеры включают извлечение кода страны из телефонного номера, получение имени пользователя из полного имени, или обрезка лишних символов в начале строки для стандартизации данных.

Обзор методов извлечения подстрок в Google Apps Script

В Google Apps Script для извлечения подстрок, в том числе и левой части строки, используются методы substring() и slice(). Оба метода позволяют получить часть строки, но имеют небольшие отличия в синтаксисе и поведении, особенно при обработке отрицательных индексов.

Использование `substring()` для получения левой части строки

Синтаксис и параметры метода `substring()`

Метод substring() принимает два параметра:

startIndex: Индекс начала подстроки (включительно).

endIndex: Индекс конца подстроки (исключительно). Если не указан, возвращается подстрока от startIndex до конца исходной строки.

Синтаксис: string.substring(startIndex, endIndex)

Примеры извлечения левой строки с помощью `substring()`

/**
 * Извлекает левую часть строки заданной длины.
 *
 * @param {string} text Исходная строка.
 * @param {number} length Длина левой подстроки.
 * @return {string} Левая подстрока.
 */
function getLeftSubstring(text: string, length: number): string {
  if (text === null || text === undefined) {
    return "";
  }
  return text.substring(0, length);
}

// Пример использования
let fullString: string = "GoogleAppsScript";
let leftString: string = getLeftSubstring(fullString, 6); // Результат: "Google"
Logger.log(leftString);

Обработка граничных случаев и ошибок (пустая строка, длина строки)

Важно учитывать граничные случаи:

Если length равен 0, возвращается пустая строка.

Если length больше длины исходной строки, возвращается вся исходная строка.

Если исходная строка пустая, возвращается пустая строка.

При передаче null или undefined в качестве аргумента text необходимо предусмотреть обработку, чтобы избежать ошибок. Пример выше показывает как это делать.

Использование `slice()` для получения левой части строки

Синтаксис и параметры метода `slice()`

Метод slice() также принимает два параметра:

startIndex: Индекс начала подстроки (включительно).

endIndex: Индекс конца подстроки (исключительно). Если не указан, возвращается подстрока от startIndex до конца исходной строки.

Реклама

Синтаксис: string.slice(startIndex, endIndex)

Примеры извлечения левой строки с помощью `slice()`

/**
 * Извлекает левую часть строки заданной длины, используя метод slice.
 *
 * @param {string} text Исходная строка.
 * @param {number} length Длина левой подстроки.
 * @return {string} Левая подстрока.
 */
function getLeftSlice(text: string, length: number): string {
  if (text === null || text === undefined) {
    return "";
  }
  return text.slice(0, length);
}

// Пример использования
let fullStringSlice: string = "GoogleAppsScript";
let leftStringSlice: string = getLeftSlice(fullStringSlice, 6); // Результат: "Google"
Logger.log(leftStringSlice);

Различия между `substring()` и `slice()` и выбор подходящего метода

Основное отличие между substring() и slice() заключается в обработке отрицательных индексов. substring() трактует отрицательные индексы как 0, в то время как slice() интерпретирует их как смещение от конца строки. Для извлечения левой строки, когда индекс начала всегда 0, оба метода работают одинаково, и выбор между ними обычно сводится к личным предпочтениям.

Применение извлечения левой строки на практике

Извлечение первых нескольких символов из данных Google Sheets

/**
 * Извлекает первые N символов из столбца в Google Sheets.
 */
function extractFirstNCharacters() {
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = ss.getActiveSheet();
  let range = sheet.getDataRange();
  let values = range.getValues();
  let n = 5; // Количество символов для извлечения

  for (let i = 0; i < values.length; i++) {
    let cellValue = values[i][0]; // Предполагаем, что данные в первом столбце
    if (typeof cellValue === 'string') {
      let extractedValue = cellValue.substring(0, n);
      sheet.getRange(i + 1, 2).setValue(extractedValue); // Записываем результат во второй столбец
    }
  }
}

Извлечение имени пользователя из адреса электронной почты

/**
 * Извлекает имя пользователя из адреса электронной почты.
 *
 * @param {string} email Адрес электронной почты.
 * @return {string} Имя пользователя.
 */
function getUsernameFromEmail(email: string): string {
  if (!email) return "";
  let atIndex: number = email.indexOf("@");
  if (atIndex === -1) {
    return email; // Возвращаем исходную строку, если нет символа @
  }
  return email.substring(0, atIndex);
}

// Пример использования
let emailAddress: string = "user.name@example.com";
let username: string = getUsernameFromEmail(emailAddress);
Logger.log(username); // Результат: "user.name"

Форматирование данных путем обрезки левой части строки

Предположим, у нас есть данные, которые всегда начинаются с префикса "ID:", и мы хотим его удалить.

/**
 * Удаляет префикс

Добавить комментарий