2010-10-02 78 views
1

我想在用戶輸入的字符串中用bfjpv替換aeiou。這裏是不工作的代碼: -如何用Perl中的bfjpv替換aeiou?

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; 
    } 

} 

我應該怎麼做才能添加一個字符?我的意思是我應該如何替換ab

回答

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

ORD =轉換字符爲整數

CHR =轉換爲字符整數

+0

太複雜了。 $ chr ++做同樣的事情。 – 2010-10-02 17:10:25

+0

是的,但意義更爲清晰。如果chr是一個整數呢? – 2010-10-02 17:38:45

10

你可以做

$char++; 

代替

$char = $char + 1; 

你也真的d不需要循環進行替換。只需使用tr操作爲:

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

偉大的這也工作得很好,更可讀:) – TCM 2010-10-02 15:59:38