我想这是一个简单的问题,但我试图将.txt文件中的第一个小写字母改为大写,使用以下
$_ =~ s/^[a-z]/\U/;
当我执行它时,不是将小写改为大写,而是将行的开头的小写替换为行上的最高位。例如,行nAkld987aBALPaapofikU88
而不是NAkld987
代替Akld987...
答案 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/;