如何用Perl中的bfjpv替换aeiou?

时间:2010-10-02 15:49:56

标签: perl string transliteration

我想在用户输入的字符串中用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;
    }

}

我该怎么做才能添加一个角色?我的意思是如何将a替换为b

3 个答案:

答案 0 :(得分:10)

你可以做到

$char++;

取代

$char = $char + 1;

另外,你真的不需要循环来进行更换。只需使用tr运算符:

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

答案 1 :(得分:7)

$string =~ tr/aeiou/bfjpv/;

整个工作。请参阅perlop manual

答案 2 :(得分:4)

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

ord =将字符转换为整数

chr =将整数转换为字符