Результат
У этой страницы вообще нет серверной части. Вставленная таблица разбирается кодом JavaScript внутри вашего же браузера, график рисуется на элементе canvas на вашей машине, файл экспорта собирается локально. Ничего не загружается, не хранится и не пишется ни в какие логи. После загрузки страницы можно отключить сеть — всё продолжит работать, и это самый простой способ проверить обещание самостоятельно.
Факты и границы применимости
| ВЕРХНИЙ РЕГИСТР | text.toUpperCase() — все буквы становятся заглавными |
|---|---|
| нижний регистр | text.toLowerCase() — все буквы становятся строчными |
| Title Case | Первая буква каждого слова — заглавная, остальные буквы слова — строчные |
| Как в предложении | Весь текст сначала переводится в нижний регистр, затем заглавной становится первая буква текста и буква после каждых «. », «! », «? » |
| иНВЕРСИЯ рЕГИСТРА | Каждая заглавная буква становится строчной, и наоборот, посимвольно |
| Счётчик изменений | Число позиций, где символ результата отличается от символа исходного текста |
Когда этот метод вводит в заблуждение
- toUpperCase() и toLowerCase() в редких случаях меняют длину текста: например, немецкая «ß» при переводе в верхний регистр браузером превращается в «SS» — два символа вместо одного. Счётчик изменённых символов в таком случае считает и «лишний» символ как изменение.
- Title Case — упрощённая версия: словом считается любая последовательность букв, поэтому дефис в «интернет-магазин» даст «Интернет-Магазин» с заглавной после дефиса, а апостроф или подчёркивание внутри слова тоже разобьют его на две части с двумя заглавными буквами.
- Режим «Как в предложении» не умеет отличать конец предложения от сокращения или десятичной дроби — после «т.д. далее» или «3.14 попугая» буква тоже станет заглавной, хотя предложение там не заканчивалось.
- Инверсия регистра применяется только к буквам, у которых вообще есть понятие «заглавная/строчная» — цифры, знаки препинания, эмодзи и иероглифы остаются без изменений и не считаются «изменёнными» символами.
Как это считается
ВЕРХНИЙ и нижний регистр — это прямой вызов стандартных методов JavaScript toUpperCase() и toLowerCase() над всей строкой целиком; они умеют работать и с кириллицей, и с латиницей.
Title Case ищет в тексте все последовательности букв («слова» в широком смысле) и заменяет каждую на вариант с заглавной первой буквой и строчными остальными: word.charAt(0).toUpperCase() + word.slice(1).toLowerCase().
Режим предложения сначала полностью переводит текст в нижний регистр, затем делает заглавной первую букву всего текста, а после — букву, следующую за точкой, восклицательным или вопросительным знаком с одним или несколькими пробелами после него.
Инверсия проходит по тексту посимвольно: если toUpperCase() символа отличается от него самого, символ — заглавный, и он переводится в строчный; если строчный вариант отличается от самого символа — он переводится в заглавный; любые другие символы остаются как есть. Счётчик изменений сравнивает исходный и результирующий текст посимвольно и считает несовпадения.
Вопросы и ответы
Чем Title Case отличается от простого капслока на каждом слове?
Title Case не просто делает первую букву слова заглавной — он ещё и приводит остальные буквы слова к строчным. Если исходное слово было написано ВСЕМИ ЗАГЛАВНЫМИ, после Title Case оно станет «Обычным Словом С Большой Буквы».
Почему после дефиса тоже появляется заглавная буква в Title Case?
Инструмент считает словом любую непрерывную последовательность букв. Дефис прерывает такую последовательность, поэтому «интернет-магазин» превращается в «Интернет-Магазин» — обе части дефисного слова получают заглавную букву.
Что считает счётчик «символов изменено»?
Он сравнивает исходный и результирующий текст посимвольно и считает позиции, где символы не совпадают. Если у вас в тексте уже был верхний регистр и вы выбрали режим «ВЕРХНИЙ РЕГИСТР», счётчик покажет 0 — менять нечего.
Можно ли обратно превратить иНВЕРСИЮ рЕГИСТРА в исходный текст?
Да — если применить инверсию регистра ещё раз к результату, буквы вернутся к исходному состоянию: инверсия — это операция, обратная самой себе.
Текст куда-то отправляется при обработке?
Нет, весь пересчёт происходит прямо в вашем браузере на каждое изменение поля, текст никуда не передаётся.