Русский

Набор текстовых инструментов

Преобразование регистра, различие, подсчет, экранирование и очистка пробелов в тексте.

Проблема, которую это решает

Списки текста приходят в плохом состоянии. Столбец электронной почты, вставленный из электронной таблицы, имеет конечные пробелы в каждой строке. В отрывке журнала есть повторяющиеся строки. Список, скопированный из PDF, имеет жесткие разрывы строк в середине предложений. Ни одна из этих задач не является сложной, но решать их вручную на протяжении четырехсот строк — это ужасно, а поиск языка сценариев для одноразовой очистки происходит медленнее, чем кажется.

Здесь все работает с текстом в поле выше. Каждая кнопка представляет собой одно преобразование, примененное ко всему тексту, и каждое из них можно отменить. Работайте небольшими шагами и проверяйте подсчеты по ходу дела.

Типичная уборка по порядку

Порядок имеет большее значение, чем люди ожидают. Обрезка перед дедупликацией почти всегда правильна: две строки, которые отличаются только конечным пробелом, не являются дубликатами, пока вы их не обрежете, поэтому предварительное удаление дубликатов автоматически оставляет их обе на месте.

Точно так же удалите пустые строки перед сортировкой, если вы хотите получить компактный результат, поскольку пустые строки сортируются в один конец и оставляют пробел, который вам все равно придется удалить.

  1. Вставьте текст в поле.
  2. Обрезать строки, чтобы удалить начальные и конечные пробелы.
  3. Удалить пустые строки.
  4. Удалите дубликаты — теперь, когда обрезка сделала настоящие дубликаты идентичными.
  5. Сортируйте A→Z, если порядок не имеет значения, чтобы результат было легко сканировать.
  6. Проверьте количество строк, затем скопируйте или загрузите.

Точно считать вещи

Панель статистики обновляется по мере ввода. Большая часть этого не требует пояснений, но количество символов заслуживает внимания, потому что это число, которое большинство инструментов ошибается.

Компьютеры хранят текст как последовательность кодовых единиц, и один видимый символ может занимать несколько из них. Смайлик 👩‍💻 — это то, что вы можете видеть, но он состоит из смайлика женщины, невидимого соединения и смайлика ноутбука — всего пять кодовых единиц. Наивный счетчик сообщает 5. Этот инструмент подсчитывает кластеры графем, что является техническим названием того, «как человек называет один символ», поэтому он сообщает 1.

Та же логика применима к символам с диакритическими знаками, написанным с помощью комбинированных знаков, а также к помеченным эмодзи. Если вы учитываете ограничение, которое накладывает другая система — столбец базы данных, шлюз SMS, социальная платформа — имейте в виду, что другая система вполне может учитываться по-другому.

Извлечение вещей

Кнопки извлечения извлекают электронные письма, URL-адреса или номера из неструктурированного текста и предоставляют их в виде чистого списка, дедуплицированного и упорядоченного по порядку появления.

Извлечение URL удаляет пунктуацию в конце предложения, поэтому «посещение https://example.com." дает URL без точки и останавливается на закрывающей круглой скобке, поэтому внутренние скобки URL выходят чистыми.

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

Как преобразование регистра находит границы слов

Преобразовать «Hello World» в CamelCase очень просто. При преобразовании parseHTTPResponse2Json инструменты расходятся во мнениях, поскольку границы подразумеваются, а не отмечаются.

Этот инструмент разделяет три сигнала: любой набор небуквенных и нецифровых символов (пробелы, дефисы, подчеркивания, знаки препинания); строчная буква или цифра, за которой следует прописная буква; и набор прописных букв, за которыми следует пара прописных и строчных букв. Это последнее правило - это то, что правильно отделяет «HTTP» от «Response» в parseHTTPResponse, вместо того, чтобы создавать p-a-r-s-e-h-t-t-p-ответ или рассматривать всю аббревиатуру как одно слово, приклеенное к другому.

В результате parseHTTPResponse становится parse_http_response в случае змеи и parse-http-response в случае кебаба, чего и ожидает большинство руководств по стилю.

Регистр заголовка и регистр предложения — разные вещи

В заголовке первая буква каждого слова пишется заглавной, а остальные — строчными, поэтому «привет WORLD» становится «Hello World». Он не знает о правилах руководства по стилю, которые сохраняют короткие слова, такие как «of» и «the» в нижнем регистре, потому что эти правила различаются в зависимости от публикации, и применение одного из них молча было бы предположением.

В регистре предложений все пишется строчными буквами, а затем первая буква каждого предложения становится заглавной, определяя окончание предложений на точках, вопросительных и восклицательных знаках, включая их полноширинные эквиваленты CJK. Это правильный выбор для текста, поступившего в ALL CAPS.

Слизни

Преобразование слизняка создает URL-безопасный идентификатор: строчные буквы, акценты сложены к их основным буквам, а каждая серия небуквенно-цифровых символов заменяется одним дефисом.

Складывание акцентов осуществляется путем разложения символов и удаления знаков объединения, поэтому «Café Crème» становится «cafe-creme», а не «caf-cr-me». Полное удаление букв с диакритическими знаками — распространенная ошибка в генераторах слизней, которая искажает имена.

Начальные и конечные разделители удаляются, а эмодзи и другие символы удаляются, поскольку они не имеют полезного представления URL.

Регулярные выражения без сбоев

Функция «Найти и заменить» имеет два режима. Литеральный режим (по умолчанию) экранирует каждый специальный символ, поэтому при поиске «a.b» будет найден именно «a.b», а не «axb». Режим Regex передает ваш шаблон как есть.

Каждый вводимый вами шаблон компилируется внутри охранника. Если он недействителен, вы получите сообщение с объяснением проблемы, и ваш текст останется нетронутым. Это имеет большее значение, чем кажется: ввод регулярного выражения — это инкрементальный процесс, а одинокий знак «(» — это совершенно нормальное промежуточное состояние на пути к рабочему шаблону. Инструмент, который в этот момент выдает необработанную ошибку — или, что еще хуже, очищает поле — непригоден для использования.

В режиме регулярного выражения замена поддерживает группы захвата с $1, $2 и т. д. Канонический пример — переформатирование дат: найдите (\d{4})-(\d{2})-(\d{2}) и замените на $3/$2/$1, чтобы превратить 2024-01-02 в 02/01/2024.

  1. Введите шаблон и отметьте «Регулярное выражение».
  2. Если он недействителен, прочитайте ошибку и продолжайте редактирование — ничего не изменилось.
  3. Используйте $1, $2 в замене для ссылки на группы захвата.
  4. Проверьте количество замен, сообщенное впоследствии, и отмените его, если оно не соответствует вашим ожиданиям.

Полное совпадение слов

Параметр «Все слово» ограничивает ваш поиск границами слов, поэтому поиск по слову «кот» соответствует слову «кот», но не «коту» внутри слова «объединить».

Он работает в обоих режимах. В буквальном режиме ваш текст сначала экранируется, а затем ограничивается; в режиме регулярного выражения весь ваш шаблон ограничен как группа, поэтому чередования, такие как cat|dog, ведут себя так, как вы ожидаете, а не привязывают границу только к первой ветке.

Часто задаваемые вопросы

Мое сообщение будет отправлено куда-нибудь?
Нет. Каждое преобразование — это функция, выполняемая на этой странице в вашем браузере. В этом инструменте нет сервера. Вы можете наблюдать, как сетевая панель вашего браузера молчит, пока вы работаете.
Сохраняются ли данные между посещениями?
Нет. Автосохранения и истории нет. Перезагрузка страницы или нажатие кнопки «Очистить данные» немедленно удаляет все данные. Это преднамеренный компромисс: это означает, что общий или общедоступный компьютер не сохраняет то, что вы вставили.
Почему количество символов отличается от другого инструмента?
Потому что этот инструмент подсчитывает то, что вы бы назвали символами — кластерами графем — в то время как многие инструменты считают UTF-16 единиц кода. Они согласны с простым английским языком и не согласны с эмодзи, буквами с акцентом, написанными с помощью комбинированных знаков, и многими нелатинскими буквами.
Что произойдет, если я введу неверное регулярное выражение?
Вы получаете четкое сообщение об ошибке, объясняющее, что было не так, и ваш текст остается таким, каким он был. Инструмент никогда не выходит из строя и никогда не очищает введенные вами данные из-за неправильного шаблона.
При дедупликации сохраняется первая или последняя копия?
Первый. Самое раннее появление остается на месте, а более поздние копии удаляются, поэтому порядок оставшихся остается неизменным.
Какой объем текста он может обработать?
Комфортно работать с небольшими мегабайтами. Все хранится на вкладке и выполняется в основном потоке, поэтому чрезвычайно большие документы — десятки мегабайт — могут ненадолго приостановить работу интерфейса во время преобразования.

Чего этот инструмент не сделает