Описание Api TextTools
Библиотека TextTools - Документация для пользователей
Обзор
TextTools - это библиотека для обработки текста, предоставляющая более 100 функций для манипуляции, преобразования и анализа текстовых данных. Все функции доступны через объект `TextTools` при использовании в скриптах.
Базовые операции
Очистка текста
// Удаление HTML тегов
TextTools.stripHtml(html)
// Удаление эмодзи и символов Unicode Emoji
TextTools.removeEmojis(text)
// Удаление диакритических знаков
TextTools.removeDiacritics(text)
// Удаление пустых строк (только пробелы/табы)
TextTools.removeEmptyLines(text)
// Удаление дубликатов строк
TextTools.removeDuplicateLines(text)
// Удаление только смежных дубликатов строк
TextTools.removeAdjacentDuplicates(text)
// Удаление управляющих символов и ANSI escape кодов
TextTools.removeControlChars(text)
// Удаление лишних пробелов
TextTools.removeExtraSpaces(text)
// Оставить только дублирующиеся строки
TextTools.keepOnlyDuplicates(text)
Работа с кавычками
// Замена кавычек различных типов
// fromType: 'smart' | 'straight' | 'backtick' | 'angle' | 'all'
// toType: 'smart' | 'straight' | 'backtick' | 'angle'
TextTools.replaceQuotes(text, fromType, toType)
// Замена умных кавычек на прямые
TextTools.replaceSmartQuotes(text)
Трансформация текста
// Замена табуляций на пробелы (по умолчанию 2 пробела на таб)
TextTools.tabsToSpaces(text, spacesPerTab = 2)
// Замена пробелов на табуляции (по умолчанию 2 пробела = 1 таб)
TextTools.spacesToTabs(text, tabSize = 2)
// Увеличение/уменьшение чисел в тексте
TextTools.incrementNumbers(text, increment = 1)
// Паддинг строк
TextTools.padString(text, length, direction = 'start', padChar = ' ')
Разделение и объединение текста
// Разделение строк по разделителю (строке или regex)
TextTools.splitLines(text, delimiter = /\s+/, treatAsRegex = false)
// Объединение строк
TextTools.joinLines(lines, delimiter = ' ', joinEvery = 2)
Извлечение с помощью regex
// Извлечение информации с помощью регулярных выражений
TextTools.extractWithRegex(text, pattern, replacement = '$0')
Подсчет и статистика
// Подсчет вхождений строк
TextTools.countLineOccurrences(text)
// Форматирование подсчета вхождений в читаемый вид
TextTools.formatOccurrences(counts)
// Подсчет слов и символов
TextTools.countStats(text)
// Выбор случайных строк
TextTools.selectRandomLines(text, count)
Фильтрация
// Удаление или сохранение только чисел
TextTools.filterNumbers(text, keepNumbers = true)
Извлечение данных ()
Извлечение контактной информации
// Извлечение email адресов
// format: 'list' | 'csv' | 'json'
// removeDuplicates: boolean
TextTools.extractEmails(text, format = 'list', removeDuplicates = true)
// Извлечение телефонных номеров
TextTools.extractPhoneNumbers(text, format = 'list', removeDuplicates = true)
Извлечение URL и ссылок
// Извлечение URL (основная версия)
// normalizeUrls: нормализует URL (добавляет протокол, убирает www и т.д.)
TextTools.extractUrls(text, format = 'list', removeDuplicates = true, normalizeUrls = true)
// Более агрессивное извлечение URL
TextTools.extractUrlsAdvanced(text, format = 'list', removeDuplicates = true, normalizeUrls = true)
// Извлечение ссылок Markdown
TextTools.extractMarkdownLinks(text, format = 'list', removeDuplicates = true)
Извлечение специальных данных
// Извлечение хештегов
// sortByFrequency: сортировать по частоте использования
TextTools.extractHashtags(text, format = 'list', removeDuplicates = true, sortByFrequency = false)
// Извлечение упоминаний (@username)
TextTools.extractMentions(text, format = 'list', removeDuplicates = true)
// Извлечение IP адресов
TextTools.extractIPAddresses(text, format = 'list', removeDuplicates = true)
// Извлечение MAC адресов
TextTools.extractMacAddresses(text, format = 'list', removeDuplicates = true)
// Извлечение дат
// dateFormat: формат даты ('YYYY-MM-DD', 'DD.MM.YYYY' и т.д.)
TextTools.extractDates(text, format = 'list', removeDuplicates = true, dateFormat = 'YYYY-MM-DD')
// Извлечение чисел
// includeDecimals: включать десятичные числа
// includeHex: включать шестнадцатеричные числа
TextTools.extractNumbers(text, format = 'list', removeDuplicates = true, includeDecimals = true, includeHex = true)
Работа с регистром ()
Преобразование регистра
// Преобразование регистра текста
// caseType: 'camel' | 'pascal' | 'snake' | 'kebab' | 'constant' | 'dot' |
// 'title' | 'sentence' | 'sponge' | 'upper' | 'lower'
TextTools.changeTextCase(text, caseType)
// Быстрые методы для конкретных типов регистра
TextTools.reverseText(text) // Реверс текста
TextTools.upperCase(text) // Верхний регистр
TextTools.lowerCase(text) // Нижний регистр
TextTools.titleCase(text) // Заголовочный регистр
TextTools.sentenceCase(text) // Предложный регистр
Вспомогательные функции
TextTools.countWords(text) // Подсчет слов
TextTools.countGraphemes(text) // Подсчет графем
TextTools.truncateText(text, length, ending = '...') // Обрезка текста
TextTools.wordWrapText(text, width = 80) // Перенос слов
TextTools.stripHtmlTags(text) // Удаление HTML тегов
TextTools.escapeHtml(text) // Экранирование HTML
TextTools.unescapeHtml(text) // Разэкранирование HTML
TextTools.trimString(text) // Обрезка пробелов
Форматирование ()
Форматирование чисел и строк
// Форматирование чисел с разделителями (запятые для тысяч)
TextTools.addCommasToNumbers(text)
// Добавление номеров строк
// style: 'number' | 'letter' | 'roman'
TextTools.addLineNumbers(text, style = 'number')
Выравнивание и перенос
// Выравнивание текста по центру
TextTools.centerAlign(text, maxWidth = 80)
// Перенос слов по заданной ширине
TextTools.wordWrap(text, width = 80)
Таблицы и обертка
// Форматирование как таблица
TextTools.formatAsTable(text, delimiter = /\t/)
// Префикс, суффикс и обертка для строк
TextTools.wrapLines(text, prefix = '', suffix = '', wrapPrefix = '', wrapSuffix = '')
📊 Работа с CSV ()
// Преобразование CSV в таблицу Markdown
TextTools.csvToMarkdownTable(csvText, delimiter = ',')
// Сортировка CSV по колонке
TextTools.sortCsvByColumn(csvText, columnIndex = 0, delimiter = ',')
// Фильтрация CSV по значению в колонке
TextTools.filterCsvByColumn(csvText, columnIndex, filterValue, delimiter = ',')
Кодирование ()
Основные операции кодирования
// Кодирование/декодирование текста
// operation: 'url-encode' | 'url-decode' | 'html-encode' | 'html-decode' |
// 'base64-encode' | 'base64-decode'
TextTools.encodeDecodeText(text, operation)
// Экранирование для JSON
TextTools.escapeJson(text)
// Разэкранирование JSON
TextTools.unescapeJson(text)
Работа с JWT
// Декодирование JWT токена
TextTools.decodeJwt(token)
// Валидация JWT токена (базовая проверка структуры)
TextTools.validateJwt(token)
Сравнение текстов ()
// Сравнение двух текстов и вывод различий
TextTools.compareTexts(text1, text2)
// Подсчет процента схожести двух текстов
TextTools.calculateTextSimilarity(text1, text2)
// Поиск общих строк в двух текстах
TextTools.findCommonLines(text1, text2)
JSON операции ()
Форматирование и валидация
// Форматирование JSON с красивым выводом
// indentSize: размер отступа (по умолчанию 2)
// sortKeys: сортировать ключи алфавитно
TextTools.formatJson(text, indentSize = 2, sortKeys = false)
// Минификация JSON
TextTools.minifyJson(text, removeWhitespace = true, removeComments = true)
// Валидация JSON
TextTools.validateJson(text)
// Извлечение JSON из текста
TextTools.extractJson(text)
Конвертация форматов
// Конвертация JSON в другие форматы
// format: 'yaml' | 'csv' | 'xml' | 'toml'
TextTools.convertJsonTo(text, format)
// Выполнение JSON Path запроса
TextTools.jsonPathQuery(text, query, outputFormat = 'json')
Сортировка ()
// Сортировка строк
// order: 'asc' | 'desc'
// method: 'default' | 'length' | 'numeric' | 'ip' | 'semver' | 'word-count' | 'grapheme'
// caseSensitive: boolean
TextTools.sortLines(text, order = 'asc', method = 'default', caseSensitive = false)
// Перемешивание строк
TextTools.shuffleLines(text)
Генераторы ()
Генерация идентификаторов
// Генерация GUID/UUID
// format: 'default' | 'no-dashes' | 'braces' | 'parens'
TextTools.generateGuid(format = 'default')
Генерация чисел
// Вставка последовательности чисел
// format: 'decimal' | 'hex' | 'roman'
TextTools.insertNumberSequence(count, start = 1, step = 1, format = 'decimal', uppercaseHex = true)
// Генерация случайных чисел
// type: 'single' | 'unique'
// format: 'decimal' | 'hex' | 'binary'
TextTools.generateNumbers(min = 1, max = 100, count = 10, type = 'single', format = 'decimal')
Работа с датами
// Вставка временных меток
// format: 'iso' | 'unix' или произвольный формат
TextTools.insertTimestamp(format = 'iso')
// Форматирование даты в произвольный формат
// format: строка с токенами (YYYY, MM, DD, HH, mm, ss и т.д.)
TextTools.formatDate(date, format)
Конвертация систем счисления
// Конвертация чисел между системами
// from: 'dec' | 'hex'
// to: 'dec' | 'hex'
TextTools.convertNumberSystem(value, from, to)
Генерация паролей ()
// Генерация безопасного пароля
// excludeSimilar: исключать похожие символы (I/l/1, O/0 и т.д.)
TextTools.generatePassword(
length = 16,
includeUppercase = true,
includeLowercase = true,
includeNumbers = true,
includeSymbols = true,
excludeSimilar = false
)
Очистка вывода LLM ()
// Очистка текста от специфических артефактов LLM
TextTools.cleanLlmOutput(text)
// Извлечение кода из текста LLM (выделяет блоки кода)
TextTools.extractCodeFromLlmOutput(text)
// Удаление только LLM-артефактов без изменения форматирования
TextTools.removeLlmArtifacts(text)
Поиск и замена ()
// Применение поиска и замены с продвинутыми опциями
TextTools.applyFindReplace(text, options)
// Проверка валидности регулярного выражения
TextTools.isValidRegex(pattern)
HTML в Markdown ()
// Преобразование HTML в Markdown
TextTools.htmlToMarkdown(html)
// Преобразование HTML в чистый текст
TextTools.htmlToText(html)
// Валидация и очистка HTML
TextTools.validateAndCleanHtml(html)
// Извлечение чистого текста (самый агрессивный режим)
TextTools.extractPlainText(html)
// HTML в Markdown с расширенными опциями
TextTools.htmlToMarkdownExtended(html, options)
Вспомогательные функции ()
// Преобразование в римские числа
TextTools.toRoman(num)
// Преобразование строк в различные форматы
TextTools.camelCase(str) // camelCase
TextTools.snakeCase(str) // snake_case
TextTools.kebabCase(str) // kebab-case
TextTools.pascalCase(str) // PascalCase
TextTools.dotCase(str) // dot.case
TextTools.constantCase(str) // CONSTANT_CASE
TextTools.startCase(str) // Start Case
TextTools.slugify(text) // slug-case (для URL)
TextTools.spongeCase(str) // SpOnGe CaSe
TextTools.upperFirst(str) // Первая буква заглавная
// Нормализация Unicode
// form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'
TextTools.normalizeUnicode(text, form = 'NFC')
Примеры использования
Пример 1: Очистка и форматирование текста
let text = "Пример текста с HTML тегами <b>и числами 123456</b>";
// Очистка HTML
text = TextTools.stripHtml(text);
// Форматирование чисел
text = TextTools.addCommasToNumbers(text);
// Результат: "Пример текста с HTML тегами и числами 123,456"
Пример 2: Извлечение данных
const content = "Контакты: email@example.com, тел: +7-999-123-45-67, сайт: https://example.com";
const emails = TextTools.extractEmails(content, 'list', true);
const phones = TextTools.extractPhoneNumbers(content, 'list', true);
const urls = TextTools.extractUrls(content, 'list', true, true);
Пример 3: Преобразование форматов
const jsonText = '{"name": "John", "age": 30}';
// JSON → YAML
const yaml = TextTools.convertJsonTo(jsonText, 'yaml');
// JSON → CSV
const csv = TextTools.convertJsonTo(jsonText, 'csv');
// HTML → Markdown
const markdown = TextTools.htmlToMarkdown('<h1>Заголовок</h1><p>Текст</p>');
Пример 4: Работа с текстом
const text = "пример текста для обработки";
// Изменение регистра
const camel = TextTools.changeTextCase(text, 'camel'); // примерТекстаДляОбработки
const snake = TextTools.changeTextCase(text, 'snake'); // пример_текста_для_обработки
const title = TextTools.changeTextCase(text, 'title'); // Пример Текста Для Обработки
// Подсчет статистики
const stats = TextTools.countStats(text);
// { characters: 27, charactersNoSpaces: 23, words: 4, lines: 1, sentences: 1, paragraphs: 1 }
pipe для скриптов
Базовое использование
`pipe` позволяет создавать компактные цепочки обработки текста в скриптах:
// Скрипт для очистки пользовательского ввода
const cleanInput = pipe(
TextTools.stripHtml,
TextTools.removeEmojis,
TextTools.removeExtraSpaces,
TextTools.changeTextCase.bind(null, 'lower')
)(userInput);
Быстрые рецепты
Очистка данных
// Очистить HTML и нормализовать текст
const sanitize = pipe(
TextTools.stripHtml,
TextTools.removeControlChars,
(t) => TextTools.changeTextCase(t, 'sentence')
);
Извлечение информации
// Извлечь все контакты из текста
const extractContacts = pipe(
(t) => ({
emails: TextTools.extractEmails(t),
phones: TextTools.extractPhoneNumbers(t),
urls: TextTools.extractUrls(t)
}),
JSON.stringify,
(t) => TextTools.formatJson(t, 2)
);
Конвертация форматов
// CSV → Markdown таблица
const csvToMd = pipe(
(csv) => TextTools.sortCsvByColumn(csv, 0),
TextTools.csvToMarkdownTable
);
// HTML → Markdown
const htmlToMd = pipe(
TextTools.validateAndCleanHtml,
TextTools.htmlToMarkdown
);
Полезные комбинации для скриптов
// Готовые цепочки для частых задач
const scripts = {
// Для социальных сетей
social: pipe(
TextTools.stripHtmlTags,
(t) => TextTools.truncateText(t, 280),
TextTools.extractHashtags
),
// Для SEO
seo: pipe(
TextTools.stripHtml,
(t) => TextTools.changeTextCase(t, 'lower'),
TextTools.slugify,
(t) => TextTools.truncateText(t, 60)
),
// Для логов
logClean: pipe(
TextTools.removeEmptyLines,
TextTools.removeDuplicateLines,
(t) => TextTools.sortLines(t, 'asc', 'timestamp')
),
// Для JSON
jsonClean: pipe(
TextTools.extractJson,
TextTools.formatJson.bind(null, 2, true)
)
};
Шорткаты для быстрых скриптов
// Создайте алиасы для частых операций
const $ = {
html: TextTools.stripHtml,
emoji: TextTools.removeEmojis,
trim: TextTools.removeExtraSpaces,
lower: (t) => TextTools.changeTextCase(t, 'lower'),
upper: (t) => TextTools.changeTextCase(t, 'upper'),
stats: TextTools.countStats
};
// Компактные скрипты
const quickScript = pipe(
$.html,
$.emoji,
$.lower,
$.trim
)(input);
Примеры готовых скриптов
1. Скрипт обработки email-рассылки
const processEmailContent = pipe(
TextTools.stripHtml,
(t) => TextTools.truncateText(t, 500),
TextTools.addLineNumbers('number'),
TextTools.wordWrapText.bind(null, 72)
);
2. Скрипт анализа текста
const analyzeText = pipe(
(t) => {
const stats = TextTools.countStats(t);
const emails = TextTools.extractEmails(t).split('\n').length;
return `📊 Анализ: ${stats.words} слов, ${emails} email`;
}
);
3. Скрипт миграции контента
const migrateContent = pipe(
TextTools.htmlToMarkdown,
(md) => md.replace(/<img[^>]+>/g, '![image]'),
TextTools.removeEmptyLines
);
Советы для скриптов
- Делайте цепочки короткими (3-5 операций)
- Используйте `bind()` для параметров
- Сохраняйте часто используемые цепочки
- Комбинируйте с другими функциями
// ❌ Слишком длинно
const badScript = pipe(/* 10+ операций */);
// ✅ Разделите на части
const clean = pipe(TextTools.stripHtml, TextTools.removeEmojis);
const format = pipe(
(t) => TextTools.changeTextCase(t, 'title'),
TextTools.wordWrapText.bind(null, 80)
);
const goodScript = (input) => format(clean(input));
`pipe` идеально подходит для создания чистых, читаемых скриптов обработки текста без лишнего кода.
Советы по использованию
Обработка ошибок: Большинство функций обрабатывают ошибки и возвращают исходный текст в случае проблем.
Производительность: Для больших текстов используйте более простые операции и избегайте сложных регулярных выражений.
Unicode поддержка: Все функции корректно работают с Unicode символами, включая эмодзи и кириллицу.
Контекст выполнения: Функции работают как в браузере, так и в Node.js окружении.