Perl, замена строки - PullRequest
       3

Perl, замена строки

4 голосов
/ 10 апреля 2011

Я хочу преобразовать каждую букву в предложении в определенную букву в зависимости от того, является ли это согласной или гласной, где гласные - это AEIOU.

Так что, если у меня есть строка

$string = 'Hello'

Хотелось бы увидеть

$string = 'CVCCV'

В результате.

Я знаю, что могу использовать:

$string =~ s/A/V/
$string =~ s/B/C/
$string =~ s/C/C/

и т. Д. Для проверки и преобразования каждой буквы в отдельности, но, безусловно, должен быть более эффективный способ сделать это.

Ответы [ 3 ]

19 голосов
/ 10 апреля 2011

нормализуйте регистр, затем примените оператор транслитерации:

$string = lc $string;
$string =~ tr/aeioua-z/VVVVVC/;
6 голосов
/ 10 апреля 2011

Используйте ... s/[bcdfghjklmnpqrstvwxyz]/C/gi и s/[aeiou]/V/gi.Они называются классами символов .Флаг i делает совпадение без учета регистра.

0 голосов
/ 10 апреля 2011
s/([aeiou])|[a-z]/ defined $1 ? 'V' : 'C' /ieg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...