Строковые функции: length, lc, uc, index, substr
В этой части Учебника Perl мы узнаем о некоторых функциях Perl, предназначенных для работы со строками.
lc, uc, length
Существует несколько простых функций, таких как lc и uc, которые возвращают строку соответственно в нижнем и в верхнем регистре. Еще есть функция length, возвращающая количество символов в данной строке.
Взгляните на пример:
use strict; use warnings; use 5.010; my $str = 'HeLlo'; say lc $str; # hello say uc $str; # HELLO say length $str; # 5
index
Еще одна функция - index. Она принимает две строки и возвращает положение второй строки внутри первой.
use strict; use warnings; use 5.010; my $str = "The black cat jumped from the green tree"; say index $str, 'cat'; # 10 say index $str, 'dog'; # -1 say index $str, "The"; # 0 say index $str, "the"; # 26
Первый вызов index вернул 10, потому что строка "cat" начинается на 10 символе. Второй вызов index вернул -1, указывая на то, что в этом предложении нет "dog".
Третий вызов показывает, что index возвращает 0, когда вторая строка стоит в начале первой.
Четвертый пример показывает, что index ищет точное совпадение, так что регистр влияет на ее работу. Поэтому "the" и "The" - не одно и то же.
index() ищет строки, а не слова, так что строку "e " тоже можно найти:
say index $str, "e "; # 2
index() также может принимать третий параметр, указывающий на место, откуда начать поиск. Так что, раз мы нашли "e " сначала на 2-м символе первой строки, можно попытаться поискать, начиная с 3-его, чтобы узнать, не встречается ли в этой строке еще "e ":
say index $str, "e "; # 2 say index $str, "e ", 3; # 28 say index $str, "e", 3; # 18
Поиск "e" без пробела даст другой результат.
Наконец, существует еще одна функция под названием rindex (right index, правый индекс), которая начинает поиск с правого конца строки:
say rindex $str, "e"; # 39 say rindex $str, "e", 38; # 38 say rindex $str, "e", 37; # 33
substr
Наверное, самая интересная функция в этой статье это substr. Это, по сути, противоположность index(). Если index() говорит нам, где расположена данная строка, substr возвращает подстроку, расположенную в данном месте. Как правило, substr принимает 3 параметра. Первый - это строка. Второй - это положение (начиная с нуля), также называемое смещение, и третий - длина строки, которую мы хотим получить.
use strict; use warnings; use 5.010; my $str = "The black cat climbed the green tree"; say substr $str, 4, 5; # black
substr начинает отсчет с нуля, так что символ со смещением 4 это буква b.
say substr $str, 4, -11; # black cat climbed the
Третий параметр (длина) может быть и отрицательным числом. В этом случае он определяет количество символов с правого конца строки, которые НЕ будут включены. Таким образом, предыдущий код значит: отсчитать 4 символа от начала, 11 от конца, и вернуть то, что между ними.
say substr $str, 14; # climbed the green tree
Также можно опустить 3-й параметр (длину), что будет значить: вернуть все символы начиная от 14 и до конца строки.
say substr $str, -4; # tree say substr $str, -4, 2; # tr
Мы можем использовать отрицательное число в качестве смещения, что будет значить: отсчитать 4 символа с конца и начать оттуда. То есть то же самое, что установить смещение length($str)-4.
Замена части строки.
Последний пример немного стремный. Пока что substr всегда возвращала подстроку и оставляла исходную строку нетронутой. В этом примере возвращаемое значение будет определяться так же, но вдобавок будет изменено содержимое исходной строки!
Возвращаемое значение substr() всегда определяется первыми тремя параметрами, но в данном случае мы передаем еще и четвертый. Это строка, которая заменит подстроку в исходной строке.
my $z = substr $str, 14, 7, "jumped from"; say $z; # climbed say $str; # The black cat jumped from the green tree
Итак, substr $str, 14, 7, "jumped from" возвращает словоclimbed, но, поскольку мы передали четвертый параметр, исходная строка была изменена.
Published on 2013-10-15