Что такое «левая строка» и где это используется?
"Левая строка" – это подстрока, состоящая из первых 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:", и мы хотим его удалить.
/**
* Удаляет префикс