2010-10-02 2 views
1

Я хочу заменить aeiou на bfjpv в введенной пользователем строке. Вот код, который не работает: -Как заменить aeiou на bfjpv в 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; 
    } 

} 

Что мне делать, чтобы добавить одного персонажа? Я имею в виду, как мне заменить a на b.

ответ

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

ога = преобразовать символ в целое

Хр = преобразовать целое число в символ

+0

Слишком сложно. $ chr ++ делает то же самое. –

+0

Да, но это гораздо яснее по смыслу. Что, если chr было целым числом? –

10

Вы можете просто сделать

$char++; 

вместо

$char = $char + 1; 

Также вы действительно d не нужно зацикливаться, чтобы выполнить замену. Просто используйте оператор tr как:

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

Отлично, это тоже прекрасно работает и более читаемо :) – TCM

Смежные вопросы