Как изменить порядок двух слов в строке? - PullRequest
2 голосов
/ 08 июля 2010

У меня есть такая строка:

$a = "Mike , Tree "; 

Я хочу изменить его на "Tree, Mike".

Есть ли какая-либо функция для этого?

Ответы [ 4 ]

10 голосов
/ 08 июля 2010

Разделите строку на две строки, переверните их и соедините их.

Или используйте регулярное выражение:

$a =~ s/(.+),(.+)/\2,\1/g;
9 голосов
/ 08 июля 2010

Используйте функцию reverse:

$reversed = join(",", reverse split(",", $string));
1 голос
/ 08 июля 2010

Только для вашей проблемы.

$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
1 голос
/ 08 июля 2010

Если вам гарантировано, что ваша строка, которую вы хотите перевернуть, будет разделена запятыми, тогда я разделю строку на запятую, а затем переберу массив, который она генерирует, от длины до 0 и добавлю еепустая строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...