Подтвердить что ты не робот

Как я могу использовать первую букву каждого слова в строке в Perl?

Каков самый простой способ заглавной буквы первой буквы в каждом слове строки?

4b9b3361

Ответ 1

Смотрите часто задаваемые вопросы.

Я не верю, что ucfirst() удовлетворяет OP-вопросу, чтобы использовать заглавные буквы первой буквы каждого слова в строке, не разбивая строку и не присоединяясь к ней позже.

Ответ 2

Как @brian упоминает в комментариях, принятый в настоящее время ответ @piCookie неверен!

$_="what the wrong answer?";
s/\b(\w)/\U$1/g
print; 

Это напечатает "What The Wrong Answer?" обратите внимание на неправильно заглавную S

Как FAQ говорит, что вам, вероятно, лучше использовать

s/([\w']+)/\u\L$1/g

или Text::Autoformat

Ответ 3

Посмотрите на функцию ucfirst.

$line = join " ", map {ucfirst} split " ", $line;

Ответ 4

$capitalized = join '', map { ucfirst lc $_ } split /(\s+)/, $line;

Захватив пробел, он вставляется в список и используется для восстановления исходного пробела. "ucfirst lc" переводится с "teXT" в "текст".

Ответ 5

$string =~ s/(\w+)/\u$1/g;

должен отлично работать

Ответ 6

Это заглавное только первое слово каждой строки:

perl -ne "print (ucfirst($1)$2)  if s/^(\w)(.*)/\1\2/" file

Ответ 7

Обратите внимание, что решение часто задаваемых вопросов не работает, если у вас есть слова, которые находятся во всех шапках, и вы хотите, чтобы они были (только) капитализированы вместо этого. Вы можете либо сделать более сложное регулярное выражение, либо просто сделать lc на строке, прежде чем применять решение для часто задаваемых вопросов.

Ответ 8

Вы можете использовать Title Case ', это очень классный фрагмент кода, написанный на Perl.

Ответ 9

Функция ucfirst на карте, безусловно, делает это, но только в очень примитивном ключе. Если вы хотите что-то более сложное, посмотрите John Gruber TitleCase script.

Ответ 10

попробуйте это:

echo "what the wrong answer?" |perl -pe 's/^/ /; s/\s(\w+)/ \u$1/g; s/^ //'

Вывод будет:

What The Wrong Answer?