2014-11-13 2 views
0

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

+1

Нужно ли использовать регулярное выражение? Если нет: http: //stackoverflow.com/questions/77226/how-can-i-capitalize-the-first-letter-of-each-word-in-a-string-in-perl \ – OnlineCop

+0

@OnlineCop Второй ответ на этот вопрос показывает, как это сделать с помощью регулярного выражения. Это дублирующий вопрос. – ThisSuitIsBlackNot

ответ

4
my $str = "FOOBAR FOOBAR"; 
$str =~ s/(\S+)/\u\L$1/g; 
print $str; 

выход

Foobar Foobar 

Проверить ucfirst и lc в perldoc.

4

Это идеальная работа для ucfirst(), нет необходимости REGEX здесь:

$ echo 'FOO BAR BASE' | 
    perl -nE '$_ = lc($_); say join " ", map { ucfirst $_ } split /\s/' 

Выход:

Foo Bar Base 
Смежные вопросы