Саммерфилд Марк
Шрифт:
Существуют также функции left и right, которые выполняют аналогичную работу. Обеим функциям передается количество символов n, и они возвращают первые и последние n символов строки. Например, следующий программный код выдает на консоль слова «polluter principle»:
Если требуется определить, содержится ли в строке конкретный символ, подстрока или соответствует ли строка регулярному выражению, мы можем использовать один из вариантов функции indexOf класса QString:
В результате i становится равным 4. Функция indexOf возвращает -1 при неудачном поиске и принимает в качестве необязательных аргументов начальную позицию и флажок учета регистра.
Если мы просто хотим проверить начальные или конечные символы строки, мы можем использовать функции startsWith и endsWith:
Это проще и быстрее, чем:
Оператор сравнения строк == зависит от регистра. Если сравниваются строки, которые пользователь видит на экране, обычно правильным решением будет использование функции localeAwareCompare, а если необходимо сделать сравнение не зависимым от регистра, мы можем использовать функции toUpper или toLower. Например:
Если мы хотим заменить определенную часть строки другой подстрокой, мы можем использовать функцию replace:
Результатом является «sunny day» (солнечный день). Этот программный код может быть переписан с применением функций remove и insert:
Во-первых, мы удаляем шесть символов, начиная с позиции 2, и в результате получаем строку «а_ _day» (с двумя пробелами), затем мы вставляем слово «sunny» в позицию 2.
Существуют перегруженные версии функции replace, которые заменяют все подстроки, совпадающие со значением первого аргумента, вторым аргументом. Например, ниже показано, как можно заменить все символы «&» в строке на «&»:
Часто требуется удалять из строки пробельные символы (пробелы, символы табуляции и перехода на новую строку). QString имеет функцию, которая удаляет эти символы с обоих концов строки:
Строку str можно представить в виде
Строка, возвращаемая функцией trimmed, имеет вид
При обработке введенных пользователем данных нам часто необходимо, кроме удаления пробельных символов с обоих концов строки, заменить каждую последовательность таких символов одним пробелом. Именно это выполняет функция simplified:
Строка, возвращаемая функцией simplified, имеет вид
Строку можно разбить на подстроки типа QStringList при помощи функции QList::split:
В приведенном выше примере мы разбиваем строку «polluter pays principle» на три подстроки: «polluter», «pays» и «principle». Функция split имеет необязательный третий аргумент, показывающий, надо ли оставлять пустые подстроки (режим по умолчанию) или нет.