1

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

3 回答 3

10

你可以做

$char++;

代替

$char = $char + 1;

此外,您真的不需要循环进行替换。只需将tr运算符用作:

($new_string = $string) =~ tr [aeiou] [bfjpv];
于 2010-10-02T15:58:22.970 回答
7
$string =~ tr/aeiou/bfjpv/;

完成整个工作。请参阅perlop 手册

于 2010-10-02T16:07:54.247 回答
4
$char = chr(ord($char) + 1);

ord = 将字符转换为整数

chr = 将整数转换为字符

于 2010-10-02T15:52:38.937 回答