Каков самый простой способ заглавной буквы первой буквы в каждом слове строки?
Как я могу использовать первую букву каждого слова в строке в Perl?
Ответ 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?