2010-10-02 15 views
1

Je veux remplacer aeiou par bfjpv dans la chaîne entrée par l'utilisateur. Voici le code qui ne fonctionne pas: -Comment puis-je remplacer aeiou avec bfjpv en Perl?

print "Enter any String :"; 
while(($string = <>) ne "\n"){ 

    @arr = split(//,$string); 

    for($i = 0 ; $i < $#arr ; $i++){ 
     $char = $arr[$i]; 

     if($char eq 'a' || $char eq 'e' || $char eq 'i' || $char eq 'o' || $char eq 'u'){ 
      $char = $char + 1; 
     } 
     print $char; 
    } 

} 

Que dois-je faire pour ajouter un caractère? Je veux dire comment remplacer a avec b.

Répondre

4
$char = chr(ord($char) + 1); 

ord = convertir caractère en nombre entier

chr = convertir entier à caractère

+0

Beaucoup trop complexe. $ chr ++ fait la même chose. –

+0

Oui, mais la signification est beaucoup plus claire. Et si chr était un entier? –

10

Vous pouvez juste faire

$char++; 

à la place de

$char = $char + 1; 

vous aussi vraiment d Il n'est pas nécessaire de faire une boucle pour faire le remplacement. Il suffit d'utiliser l'opérateur tr comme:

($new_string = $string) =~ tr [aeiou] [bfjpv]; 
+0

Super cela fonctionne aussi bien et est plus lisible :) – TCM

7
$string =~ tr/aeiou/bfjpv/; 

Est-ce que tout le travail. Voir le perlop manual.