我想将句子中的每个字母转换为某个字母,具体取决于它是辅音还是元音,其中元音是AEIOU。Perl,字符串替换
所以,如果我有一个字符串
$string = 'Hello'
我想看到
$string = 'CVCCV'
结果。
我知道我可以使用:
$string =~ s/A/V/
$string =~ s/B/C/
$string =~ s/C/C/
等检查,并分别将每个字母,但肯定必须有这样做更有效的方式。
我想将句子中的每个字母转换为某个字母,具体取决于它是辅音还是元音,其中元音是AEIOU。Perl,字符串替换
所以,如果我有一个字符串
$string = 'Hello'
我想看到
$string = 'CVCCV'
结果。
我知道我可以使用:
$string =~ s/A/V/
$string =~ s/B/C/
$string =~ s/C/C/
等检查,并分别将每个字母,但肯定必须有这样做更有效的方式。
使用... s/[bcdfghjklmnpqrstvwxyz]/C/gi
和s/[aeiou]/V/gi
。这些被称为character classes。 i
标志使匹配不区分大小写。
正常化的情况下,然后应用转换操作符:
$string = lc $string;
$string =~ tr/aeioua-z/VVVVVC/;
干得好!对于012 – tchrist 2011-04-09 23:04:57
+1:'tr ///'>'s ///'这个操作。 – 2011-04-11 09:45:25
s/([aeiou])|[a-z]/ defined $1 ? 'V' : 'C' /ieg
非常实用!非常感谢! – Brian 2011-04-09 22:50:30
没问题。 http://www.regular-expressions.info是一个很好的参考;你可能会觉得它很有用。 – syrion 2011-04-09 22:52:28
总有'y/AEIOU/V /',虽然我怀疑它的补充,'y/AEIOU/C/c',可能不是你正在寻找的东西。如果你真的要使用'/ /',那么你可以使用不区分大小写的'/ i',呃? – tchrist 2011-04-09 22:55:13