ZetCode

Perl ucfirst 函数

最后修改于 2025 年 4 月 4 日

Perl 的 ucfirst 函数将字符串的第一个字符大写。它对于将文本格式化为首字母大写或句子开头大写很有用。

ucfirst 只影响第一个字符,其余字符串保持不变。它适用于 ASCII 和 Unicode 字符。

ucfirst 的基本用法

使用 ucfirst 最简单的方法是直接在单个字符串变量上使用。

basic.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $text = "hello world";
print "Original: '$text'\n";

my $capitalized = ucfirst($text);
print "Modified: '$capitalized'\n";
print "Original remains: '$text'\n";

我们演示了 ucfirst 对第一个字母进行大写处理。该函数返回一个新字符串,而不修改原始变量。

$ ./basic.pl
Original: 'hello world'
Modified: 'Hello world'
Original remains: 'hello world'

修改原始变量

要修改原始字符串,请将结果分配回变量。

modify.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $name = "john doe";
print "Before: '$name'\n";

$name = ucfirst($name);
print "After: '$name'\n";

这展示了如何通过将 ucfirst 的结果重新分配给原始变量来永久大写字符串。

$ ./modify.pl
Before: 'john doe'
After: 'John doe'

处理 Unicode

ucfirst 在现代 Perl 中可以正确处理 Unicode 字符。

unicode.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;
use utf8;

my $greek = "γάλα"; # Greek word for "milk"
print "Original: '$greek'\n";

my $capitalized = ucfirst($greek);
print "Capitalized: '$capitalized'\n";

该示例演示了 ucfirst 对希腊语 Unicode 字符串的使用。请注意 use utf8 pragma 用于正确处理 Unicode。

$ ./unicode.pl
Original: 'γάλα'
Capitalized: 'Γάλα'

多个单词

要将字符串中的每个单词的首字母大写,请将 ucfirstsplitjoin 结合使用。

words.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $phrase = "perl programming language";
print "Original: '$phrase'\n";

my @words = split(' ', $phrase);
@words = map { ucfirst($_) } @words;
my $title = join(' ', @words);

print "Title Case: '$title'\n";

此脚本通过将每个单词的首字母大写来将字符串转换为标题格式,同时保留原始间距。

$ ./words.pl
Original: 'perl programming language'
Title Case: 'Perl Programming Language'

用户输入大写

ucfirst 对于格式化用户提供的姓名很有用。

input.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

print "Enter your city: ";
my $city = <STDIN>;
chomp $city;

$city = ucfirst(lc($city));
print "Formatted city: '$city'\n";

该脚本读取用户输入,使用 chomp 删除换行符,转换为小写,然后将首字母大写以实现一致的格式。

$ ./input.pl
Enter your city: lONDON
Formatted city: 'London'

数组处理

可以使用 mapucfirst 应用于数组元素。

array.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my @names = ("alice", "bob", "charlie");
print "Original: @names\n";

@names = map { ucfirst($_) } @names;
print "Capitalized: @names\n";

此示例处理一个姓名数组,并将每个姓名都大写。map 函数将 ucfirst 应用于每个元素。

$ ./array.pl
Original: alice bob charlie
Capitalized: Alice Bob Charlie

与其他函数结合使用

ucfirst 可以与其他字符串函数结合使用,以实现强大的转换。

combine.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $text = "  perl is GREAT!  ";
print "Original: '$text'\n";

# Trim, lowercase, then capitalize
$text =~ s/^\s+|\s+$//g;
$text = lc($text);
$text = ucfirst($text);

print "Processed: '$text'\n";

此脚本演示了一个常见的文本处理流程:修剪空白字符、转换为小写,然后将首字母大写。

$ ./combine.pl
Original: '  perl is GREAT!  '
Processed: 'Perl is great!'

最佳实践

来源

Perl ucfirst 文档

本教程介绍了 Perl 的 ucfirst 函数,并通过实际示例演示了其在常见字符串处理场景中的用法。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。至今,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 Perl 教程