Perl,字符串替换

Bri*_*ian 4 string perl

我想将一个句子中的每个字母转换为某个字母,具体取决于它是辅音还是元音,其中元音是AEIOU.

所以,如果我有一个字符串

$string = 'Hello'
Run Code Online (Sandbox Code Playgroud)

我想看看

$string = 'CVCCV'
Run Code Online (Sandbox Code Playgroud)

结果是.

我知道我可以用:

$string =~ s/A/V/
$string =~ s/B/C/
$string =~ s/C/C/
Run Code Online (Sandbox Code Playgroud)

等等,每个字母单独检查和转换,但肯定必须有一个更有效的方法来做到这一点.

tad*_*dmc 19

规范化大小写,然后应用音译操作符:

$string = lc $string;
$string =~ tr/aeioua-z/VVVVVC/;
Run Code Online (Sandbox Code Playgroud)


ast*_*asr 6

使用...... s/[bcdfghjklmnpqrstvwxyz]/C/gis/[aeiou]/V/gi.这些被称为字符类.该i标志使匹配不区分大小写.

  • 总是`y/AEIOU/V /`,虽然我怀疑它的补充,`y/AEIOU/C/c`,可能不是你想要的.如果你真的要使用`s ///`,你也可以使用不区分大小写的`/ i`,是吗? (2认同)
  • 音译运算符(tr ///)是这个的正确工具,而不是替换运算符(s ///).请参阅tadmc的回答. (2认同)