使用大写perl更改一行的第一个字符

The*_*air 22 regex perl

这是一个简单的问题,我想,但我试图将.txt文件中的第一个小写字母改为大写,使用以下

$_ =~ s/^[a-z]/\U/;
Run Code Online (Sandbox Code Playgroud)

当我执行它时,会发生的是,不是将小写字母改为大写字母,而是将行尾开始的小写字母替换为该行上的最高位.例如,nAkld987aBALPaapofikU88代替被替换的行NAkld987变为Akld987...

RC.*_*RC. 30

你可以/应该使用ucfirst.我说应该对维护者来说更明显的是你的意图是大写字符串的第一个字母.我喜欢正则表达式,但在这种情况下,我觉得这不是正确的方法.

my $str = "test";
print ucfirst($str);
Run Code Online (Sandbox Code Playgroud)


Roh*_*ain 23

您需要捕获first character捕获组,并使用back reference它将其转换为uppercase使用\u.

试试这个: -

$_ =~ s/^([a-z])/\u$1/;
Run Code Online (Sandbox Code Playgroud)

  • 当Perl具有ucfirst功能时,为什么要启动到正则表达式? (5认同)

cod*_*ict 15

你可以使用这个ucfirst功能.

如果你想使用正则表达式,你可以这样做:

$_ =~ s/^([a-z])/\u$1/;
Run Code Online (Sandbox Code Playgroud)

要么

$_ =~ s/^([a-z])/\U$1\E/;
Run Code Online (Sandbox Code Playgroud)