Обратная перестановка слов или символов
Проблема
Требуется изменить порядок символов или слов в строке на противоположный.
Решение
Для перестановки байтов воспользуйтесь функцией
reverse в скалярном контексте:
$revbytes = reverse($string);
Для перестановки слов воспользуйтесь reverse в списковом контексте с функциями
split и
join:
$revwords = join(" ", reverse split(" ", $string));
Комментарий
У функции reverse существуют два варианта применения. В скалярном контексте функция объединяет
аргументы и возвращает полученную строку в обратном порядке. В списковом контексте функция возвращает
аргументы в обратном порядке. При использовании reverse для перестановки символов в неочевидной
ситуации используйте функцию
scalar для форсированного применения скалярного контекста.
$gnirts = reverse($string); # Перестановка символов $string
@sdrow = reverse(@words); # Перестановка элементов @sdrow
@confused = reverse (@words); # Перестановка букв в join("", @words)
Приведем пример обратной перестановки слов в строке. Пробел (" ") в качестве шаблона
split является особым случаем. Он заставляет split использовать в качестве разделителя смежные
пропуски (whitespace) и отбрасывать начальные пустые поля (по аналогии с awk). Обычно split
отбрасывает только конечные пустые поля.
# Обратная перестановка слов
$string = 'Yoda said, "can you see this?"';
@allwords = split(" ", $string);
$revwords = join(" ", reverse @allwords);
print $revwords, "\n";
this?" see you "can said, Yoda
Временный массив @allwords можно убрать и сделать все в одной строке:
$revwords = join(" ", reverse split(" ", $string));
Смежные пропуски в $string превращаются в один пробел в $revwords. Чтобы сохранить существующие пропуски, поступите так:
$revwords = join("", reverse split (/(\s+)/, $string));
С помощью функции reverse можно проверить, является ли слово палиндромом (то есть читается ли одинаково в обоих направлениях):
$word = "reviver";
$is_palindrome = ($word eq reverse($word));
См. такжеОписание функций
split,
reverse и
scalar
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|