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

时间:2012-11-21 16:28:14

标签: regex perl

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

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

当我执行它时,不是将小写改为大写,而是将行的开头的小写替换为行上的最高位。例如,行nAkld987aBALPaapofikU88而不是NAkld987代替Akld987...

3 个答案:

答案 0 :(得分:30)

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

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

答案 1 :(得分:23)

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

尝试使用: -

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

答案 2 :(得分:15)

您可以使用ucfirst功能。

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

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

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