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

StackOverflow https://stackoverflow.com/questions/77226

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Видишь часто задаваемые вопросы.

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

Другие советы

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

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

Здесь будет напечатано "Какой неправильный ответ?" обратите внимание на неправильно написанную букву S

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

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

или Текст::Автоформат

Взгляните на uc первый функция.

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

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

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

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

При этом заглавными буквами пишется только первое слово каждой строки:

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

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

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

Тот Самый uc первый функция в map, безусловно, делает это, но только очень элементарным способом.Если вы хотите что-то более утонченное, взгляните на Сценарий к фильму Джона Грубера.

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

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

Какой ответ Неправильный?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top