Текстов Обръщач: Обръщане на Текст и Обръщане на Знаци Мигновено
Безплатен онлайн инструмент за обръщане на текст, който незабавно обръща всеки низ. Обръщане на знаци, проверка на палиндроми и създаване на текст отзад напред. Работи с Уникод, емоджита и всички езици.
Инструмент за обръщане на текст
Въведете или поставете текст по-долу, за да обърнете незабавно реда на знаците. Виждайте резултатите в реално време докато пишете.
Документация
Какво представлява инструментът за обръщане на текст?
Инструментът за обръщане на текст е средство, което обръща реда на знаците в даден текст. При въвеждане на „hello“ се получава „olleh“. Той записва всеки знак от входа в обратен ред — от последния към първия. Използва се за създаване на текст в обратна посока, за проверка дали дадена дума е палиндром или за изучаване на начина, по който работи обръщането на низове в програмирането.
Как се използва инструментът за обръщане на текст
- Въведете или поставете текст в полето за въвеждане.
- Обърнатият текст се появява отдолу веднага щом спрете да пишете. Не е необходимо да натискате бутон.
- Натиснете бутона за копиране, за да копирате резултата.
Бутонът за нулиране изтрива както въведения текст, така и резултата. Инструментът приема до 10 000 знака; при по-дълъг текст се показва съобщение за грешка с молба да го съкратите. Броят се определя по видимите знаци, така че едно емоджи се брои за един знак, въпреки че компютърът го съхранява като няколко части.
Формула за обръщане на текст
За низ с дължина n, съставен от знаците , обърнатият низ е:
Казано с прости думи: последният знак става първи, предпоследният става втори и така нататък, докато първият знак стане последен.
Как работи алгоритъмът — стъпка по стъпка
- Започнете с празен резултат.
- Вземете последния знак от входа и го добавете към резултата.
- Вземете предпоследния знак и го добавете.
- Повтаряйте, докато всички знаци бъдат добавени в обратен ред.
Повечето инструменти за обръщане работят с отделни компютърни знаци. Този инструмент вместо това групира всяко емоджи, знаме и буква с диакритичен знак в една единица, преди да ги обърне, чрез метод, наречен сегментиране по графемни клъстери. Следващият раздел обяснява защо това има значение.
Решен пример
Вход: Hello, World!
Обърнат текст: !dlroW ,olleH
Всеки знак, включително запетаята, интервалът и удивителният знак, запазва своята идентичност. Променя се само редът.
Обработка на емоджи, диакритични знаци и други знаци на Unicode
Компютрите често съхраняват един видим знак, например емоджи или буква с диакритичен знак, като повече от една малка единица, наречена кодова точка. Метод за обръщане, който разменя тези единици една по една, без да отчита кои принадлежат заедно, може да раздели даден знак.
Например „Hello 👍“ съдържа емоджи с вдигнат палец, изградено от двойка скрити единици. Обикновеното обръщане на единиците поотделно може да раздели тази двойка и вместо емоджито да създаде повредени символи. Този инструмент избягва проблема, като третира всяко емоджи, знаме и буква с диакритичен знак като една единица, така че „Hello 👍“ правилно се превръща в „👍 olleH“. Емоджи със знаме, изградено от два скрити символа, представящи код на държава, също се запазва цялостно: „🇺🇸 USA“ се обръща до „ASU 🇺🇸“, вместо знамето да бъде разделено.
Обичайни приложения
- Проверка за палиндроми: палиндромът се чете еднакво отпред и отзад, например „racecar“. Сравняването на дума с нейния обърнат вариант е един от начините да се провери това.
- Изучаване на програмиране: обръщането на низ е често упражнение за практикуване на цикли, масиви и стекове.
- Игри с думи и главоблъсканици: обърнатите думи се използват за скриване на съобщения в главоблъсканици и ескейп стаи.
- Дизайнерски ефекти: някои дизайнери обръщат текста за огледални лога или визуални ефекти.
- Отстраняване на грешки: сравняването на текста в нормален и обърнат ред може да помогне за откриването на определени грешки в данните.
Обръщане на знаци и обръщане на думи
Тези две операции често се бъркат.
- Обръщане на знаци (това прави инструментът): всеки знак се обръща. „Hello World“ става „dlroW olleH“.
- Обръщане на думи: всяка дума остава непроменена, но редът на думите се променя. „Hello World“ става „World Hello“.
Кратка история
Обърнатото и огледалното писане се появяват хиляди години преди компютрите. В някои древногръцки надписи е използван стил, наречен бустрофедон, при който посоката на редовете се редува — отляво надясно, а след това отдясно наляво — подобно на движението на вол при оран на нива. Леонардо да Винчи е написал голяма част от бележниците си в огледален шрифт, който може да се прочете само пред огледало; историците все още спорят дали го е правил заради секретност, за удобство като левичар или за да не размазва мастилото.
В изчислителната техника обръщането на низ е стандартно упражнение по програмиране още от ранните дни на компютърните науки. То често се използва за преподаване на начина, по който работят стековете и масивите, тъй като поставянето на знаци в стек и изваждането им от него автоматично обръща реда им.
Как да обърнете текст в код
Повечето езици за програмиране включват вградена или проста възможност за обръщане на низ:
1text = "Hello, World!"
2print(text[::-1]) # !dlroW ,olleH
31const text = "Hello, World!";
2console.log([...text].reverse().join('')); // !dlroW ,olleH
3И двата примера правилно обръщат текста при обикновени букви и цифри, както и при емоджи, съставени от една единица, например 🌍. Те все пак могат да разделят знак, изграден от няколко скрити единици, например някои емоджи със знамена, букви с отделно въведен диакритичен знак или емоджи на семейства, свързани със специални съединителни знаци. Пълното обръщане със запазване на графемите, използвано от този инструмент, изисква специална функция, например Intl.Segmenter на JavaScript.
Производителност
Обръщането на текст изисква линейно време: алгоритъмът разглежда всеки знак точно веднъж, така че удвояването на входа приблизително удвоява работата. При обикновен текст — от една дума до няколко страници — резултатът се появява практически незабавно. Много големите файлове, с размер от порядъка на мегабайти и повече, се обработват по-добре от специализирани програми, които предават данните на части, вместо да ги зареждат наведнъж в паметта.
Често задавани въпроси
Как да обърна текст онлайн?
Поставете или въведете текст в полето по-горе. Обърнатият текст се появява автоматично веднага щом спрете да пишете. Използвайте бутона за копиране, за да копирате резултата.
Има ли максимална дължина на текста?
Да. Инструментът приема до 10 000 знака. По-дългият текст извежда съобщение за грешка вместо резултат. Знаците се броят така, както изглеждат на екрана, така че едно емоджи или една буква с диакритичен знак се брои за един, а не за два знака.
Този инструмент обръща ли думи или само знаци?
Той обръща отделните знаци, а не реда на думите. „Hello World“ става „dlroW olleH“, а не „World Hello“.
Може ли да обработва емоджи и текст на други езици?
Да. Инструментът третира емоджи, знамена и букви с диакритични знаци като отделни единици, така че те остават цели след обръщането. Работи и с всяка писменост, включително китайски, арабски и кирилски текст.
Ако обърна текста два пъти, ще получа ли отново оригинала?
Да. Обръщането на обърнат низ възстановява оригиналния текст. Това свойство се нарича инволюция.
Полезен ли е обърнатият текст за криптиране?
Не. Обръщането на знаците не е сигурно. То само скрива текста визуално и всеки, който го обърне обратно, може да го прочете.
Източници
- Консорциумът Unicode. Unicode Standard Annex #29: Сегментиране на текст в Unicode.
- Cormen, T. H., Leiserson, C. E., Rivest, R. L. и Stein, C. (2009). Въведение в алгоритмите (3-то изд.). MIT Press.
- MDN Web Docs. Intl.Segmenter. Mozilla Developer Network.