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

Изменение первого символа на строке с верхним регистром perl

Это простой вопрос, который я предполагаю, но я пытался изменить только первое строчное письмо строки из .txt файла в верхний регистр, используя следующий

$_ =~ s/^[a-z]/\U/;

Что происходит, когда я его выполняю, заключается в том, что вместо изменения строчной буквы в верхний регистр нижний регистр в начале строки заменяется самым значительным битом на линии. Например, строка nAkld987aBALPaapofikU88 вместо замены NAkld987 становится Akld987...

4b9b3361

Ответ 1

Вам нужно захватить first character в группе захвата и использовать back reference для преобразования его в uppercase с помощью \u.

Попробуйте использовать: -

$_ =~ s/^([a-z])/\u$1/;

Ответ 2

Вы можете/должны использовать ucfirst. Я говорю, должен, как это гораздо более очевидным для сопровождающего, что ваше намерение состоит в том, чтобы загладить первую букву строки. Мне нравится регулярное выражение, но в этом случае я считаю, что это не правильный подход.

my $str = "test";
print ucfirst($str);

Ответ 3

Вы можете просто использовать функцию ucfirst.

Если вы хотите использовать регулярное выражение, вы можете сделать:

$_ =~ s/^([a-z])/\u$1/;

или

$_ =~ s/^([a-z])/\U$1\E/;