我想將句子中的每個字母轉換爲某個字母,具體取決於它是輔音還是元音,其中元音是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