J'ai une chaîne comme ceci:Comment inverser l'ordre de deux mots dans une chaîne?
$a = "Mike , Tree ";
Je veux inverser la "Tree, Mike"
.
Y at-il une fonction pour faire cela?
J'ai une chaîne comme ceci:Comment inverser l'ordre de deux mots dans une chaîne?
$a = "Mike , Tree ";
Je veux inverser la "Tree, Mike"
.
Y at-il une fonction pour faire cela?
Si vous êtes assuré la votre chaîne que vous voulez être inversé seront séparés par des virgules puis je diviser la chaîne à la virgule, puis passer par le tableau, il produit de sa longueur à 0 et l'ajoute à une chaîne vide.
Divisez la chaîne en deux chaînes, retournez-les et rejoignez-les.
Ou, utilisez une expression régulière:
$a =~ s/(.+),(.+)/\2,\1/g;
Mieux que Roque réponds de mon point de vue car l'expression rationnelle vous permet de mieux contrôler l'espace supplémentaire. Dans votre cas, je ferais exactement $ a = ~ s/(\ S +) \ s *, \ s * (\ S +)/\ 2, \ 1/g; – radius
\ 1, etc dans le côté de remplacement est longtemps obsolète et déclenchera un avertissement; faites ceci à la place: '$ a = ~ s /(.+),(.+)/$ 2, $ 1/g;' – ysth
Sa bonne réponse – Tree
Juste pour votre problème.
$a =~ s/([A-Za-z]+)([^A-Za-z]+)([A-Za-z]+)/$3$2$1/;
[[email protected] trunk]$ perl -E '$a = "Mike , Tree "; $a =~ s/([A-Za-z]+)([^A-Za-z]+)([A-Za-z]+)/$3$2$1/; say $a;'
Tree , Mike
je suis ne sais pas qui je peux accepter réponse .. parce que les deux réponse est bonne ... – Tree
est le changé des espaces importants? – Svante
yes ................. – Tree