У меня есть такая строка:
$a = "Mike , Tree ";
Я хочу изменить его на "Tree, Mike".
"Tree, Mike"
Есть ли какая-либо функция для этого?
Разделите строку на две строки, переверните их и соедините их.
Или используйте регулярное выражение:
$a =~ s/(.+),(.+)/\2,\1/g;
Используйте функцию reverse:
reverse
$reversed = join(",", reverse split(",", $string));
Только для вашей проблемы.
$a =~ s/([A-Za-z]+)([^A-Za-z]+)([A-Za-z]+)/$3$2$1/; [JJ@JJ trunk]$ perl -E '$a = "Mike , Tree "; $a =~ s/([A-Za-z]+)([^A-Za-z]+)([A-Za-z]+)/$3$2$1/; say $a;' Tree , Mike
Если вам гарантировано, что ваша строка, которую вы хотите перевернуть, будет разделена запятыми, тогда я разделю строку на запятую, а затем переберу массив, который она генерирует, от длины до 0 и добавлю еепустая строка.