Введение в текстовые функции в Rust
Текст в программе часто нужно не только хранить и печатать, но и проверять, резать и преобразовывать. Для строк и срезов текста в языке есть набор встроенных команд: они ищут кусок внутри фразы, меняют регистр букв, убирают пробелы по краям и переводят запись из цифр в число.
Большинство таких команд не меняют исходную
строку на месте, а отдают новый текст или
отдельный ответ: логический признак, место
куска, необязательное значение или результат
с возможной ошибкой. Это согласуется с тем,
как устроены String и &str:
удобнее получить новую фразу или явный
ответ, чем гадать, изменилось ли старое
значение.
В разделе опираемся на уже знакомые типы текста, циклы, условия, необязательное значение и результат с ошибкой. Перебор символов и длина текста здесь не разбираются заново: они были в соседних уроках про строки. Дальше шаг за шагом пройдем регистр, первую букву, проверки краев, поиск, замену, обрезку, разбиение, повтор, перевод в число и в логическое значение, а также проверки отдельного символа.
Файлы и первые предложения: case/ru.html
(регистр букв меняют, и получается новая
строка), first/ru.html (первую букву
латинского слова достают из перебора
символов), edges/ru.html (спрашивают,
содержит ли текст кусок и начинается ли
он с куска), find/ru.html (поиск
отдает место куска или пусто), replace/ru.html
(замена строит новую фразу, исходная
остается), trim/ru.html (обрезка
убирает пробелы по краям), split/ru.html
(разбиение делит фразу по разделителю
на куски), repeat/ru.html
(фразу повторяют несколько раз подряд),
parse-num/ru.html (текст из цифр
переводят в целое, и перевод может не
удасться), parse-bool/ru.html (слова
true и false переводят в
логическое значение), char-check/ru.html
(у символа спрашивают, цифра это, буква
или пробел), practice/ru.html (в
этих задачах потренируем поиск и перевод
текста).