我猜这是一个简单的问题,但我试图使用以下命令将行的第一个小写字母从 .txt 文件更改为大写
$_ =~ s/^[a-z]/\U/;
当我执行它时,会发生什么,而不是将小写字母更改为大写字母,而是将行首的小写字母替换为行中的最高有效位。例如,该行nAkld987aBALPaapofikU88
而不是被替换NAkld987
为Akld987...
你可以/应该使用ucfirst
. 我说应该,因为对于维护者来说,你的意图是将字符串的第一个字母大写更明显。我喜欢正则表达式,但在这种情况下,我觉得这不是正确的方法。
my $str = "test";
print ucfirst($str);
您需要first character
在捕获组中捕获 ,并使用back reference
将其转换为uppercase
using \u
。
尝试使用这个: -
$_ =~ s/^([a-z])/\u$1/;
您可以只使用该ucfirst
功能。
如果你想使用正则表达式,你可以这样做:
$_ =~ s/^([a-z])/\u$1/;
或者
$_ =~ s/^([a-z])/\U$1\E/;
由于对正则表达式不太熟练,我完成了这个map
(基本上是foreach
,除了它既迭代一个列表并返回被操纵的列表):
$string = join " ", map { ucfirst } split " ", $string;