Функции для работы со строками
В результате выполнения скрипта будут выведены следующие строки:
Индекс первого символа строки по умолчанию равен 0 Позиция первого вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 5 Позиция первого после позиции 7 вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 15 Позиция последнего вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный,.безумный мир!' = 35 Позиция последнего перед позицией 7 вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 5 Индекс первого символа строки по умолчанию изменен на 2 Позиция первого вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 7 Позиция первого после позиции 7 вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 7 Позиция последнего вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 37 Позиция последнего перед позицией 7 вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 7
Функция:
substr () substr EXPR, OFFSET [,LENGTH [,REPLACEMENT ]]
…извлекает из выражения EXPR подстроку и возвращает ее. Возвращаемая подстрока состоит из LENGTH символов, расположенных справа от позиции OFFSET. Если параметр LENGTH опущен, возвращается вся оставшаяся часть выражения EXPR. Если параметр LENGTH отрицательный, его абсолютное значение задает количество символов от конца строки, не включаемых в результирующую подстроку. Если параметр OFFSET имеет отрицательное значение, смещение отсчитывается с конца строки.
Функция substr () может стоять в левой части операции присваивания. Например, в результате выполнения операторов:
$Str = "Язык Pascal"; substr($Str, 5.6) = "Perl";
…переменная $str получит значение "язык Peri". Тот же результат будет достигнут, если указать параметр REPLACEMENT, значение которого будет подставлено в EXPR вместо выделенной подстроки. Сама подстрока в этом случае возвращается в качестве значения функции substr ().
#!/bin/peri # Исходная строка $Str = "Карл у Клары украл кораллы"; $0ffset = 13; print "Исходная строка:'$Str'\n"; # Смещение 13, длина подстроки не задана $Substr = substr $Str, $Offset; print "Смещение $0ffset, длина подстроки не задана, результат:\n"; print "$Substr\n"; # Смещение 13, длина подстроки +5 $Substr = substr $Str, $0ffset, 5; print "Смещение $0ffset, длина подстроки +5, результат:\n"; print "$Substr\n"; / # Смещение 13, длина подстроки – 1 \ $Substr = substr $Str, $0ffset, – 1; print "Смещение $0ffset, длина подстроки – 1, результат:\n"; print "$Substr\n"; # Отрицательное смещение – 7, длина подстроки +7 $0ffset = – 7; $Substr = substr $Str, $Offset, 7; print "Отрицательное смещение $Offset, длина подстроки +7, результат:\n"; print "$Substr\n"; f Отрицательное смещение – 7, длина подстроки – 1 $Substr = substr $Str, $0ffset, – 1; print "Отрицательное смещение $Offset, длина подстроки – 1, результат:\n"; print "$Substr\n"; t Замена подстроки $Repl = "бокалы"; $Substr = substr $Str,$Offset,7,$Repl; print "В строке '$Str' слово '$Repl' заменяет слово '$Substr'\n"; Вывод выглядит следующим образом: Исходная строка:'Карл у Клары украл кораллы' Смещение 13, длина подстроки не задана, результат: украл кораллы Смещение 13, длина подстроки +5, результат: украл Смещение 13, длина подстроки – 1, результат: украл коралл Отрицательное смещение – 7, длина подстроки +7, результат: кораллы Отрицательное смещение – 7, длина подстроки – 1, результат: коралл В строке 'Карл у Клары украл бокалы' слово 'бокалы' заменяет слово 'кораллы'