ZetCode

Perl lc 函数

最后修改于 2025 年 4 月 4 日

Perl 的 lc 函数将字符串转换为小写。它默认处理 ASCII 字符,并在适当的时候遵循 Unicode 规则。

lc 函数具有区域感(locale-aware),可以处理国际字符。它返回一个新的字符串,而不是修改原始变量。

基本 lc 用法

使用 lc 最简单的方式是作用于单个字符串变量。

basic.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $text = "Hello World!";
my $lower = lc($text);

print "Original: '$text'\n";
print "Lowercase: '$lower'\n";

我们演示了 lc 将混合大小写字符串转换为小写。原始字符串保持不变。

$ ./basic.pl
Original: 'Hello World!'
Lowercase: 'hello world!'

不区分大小写地比较字符串

lc 对于不区分大小写的字符串比较非常有用。

compare.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $input = "YeS";
my $match = "yes";

if (lc($input) eq lc($match)) {
    print "Input matches (case-insensitive)\n";
} else {
    print "Input doesn't match\n";
}

此脚本通过在比较之前将两个字符串都转换为小写,从而不区分大小写地比较用户输入。

$ ./compare.pl
Input matches (case-insensitive)

处理数组

lc 可以使用 map 来处理数组元素。

array.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my @words = ("APPLE", "Banana", "CherRY");
my @lower_words = map { lc } @words;

print "Original: @words\n";
print "Lowercase: @lower_words\n";

我们将数组的所有元素转换为小写。原始数组保持不变,同时我们创建了一个新的小写版本。

$ ./array.pl
Original: APPLE Banana CherRY
Lowercase: apple banana cherry

国际字符

lc 可以正确处理国际字符。

unicode.pl
#!/usr/bin/perl

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

my $text = "ÉLÉGANT Zürich";
my $lower = lc($text);

binmode STDOUT, ':utf8';
print "Original: '$text'\n";
print "Lowercase: '$lower'\n";

这演示了 lc 处理带重音字符和 umlaut(分音符)的情况。注意用于 Unicode 支持的 use utf8 pragm。

$ ./unicode.pl
Original: 'ÉLÉGANT Zürich'
Lowercase: 'élégant zürich'

lc 与 lcfirst 的区别

lclcfirst 不同,后者只影响第一个字符。

compare_functions.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $text = "Perl Programming";

print "lc: ", lc($text), "\n";
print "lcfirst: ", lcfirst($text), "\n";

lc 转换整个字符串,而 lcfirst 只将第一个字符转换为小写。

$ ./compare_functions.pl
lc: perl programming
lcfirst: perl Programming

与哈希一起使用

lc 可以规范化哈希键,以实现不区分大小写的查找。

hash.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my %colors = (
    red => "#FF0000",
    green => "#00FF00",
    blue => "#0000FF"
);

my $user_input = "RED";
my $color_code = $colors{lc $user_input};

if (defined $color_code) {
    print "Hex code for $user_input is $color_code\n";
} else {
    print "Color not found\n";
}

我们使用 lc 在哈希查找之前规范化用户输入。这允许不区分大小写地访问哈希值。

$ ./hash.pl
Hex code for RED is #FF0000

区域感知

lc 在进行大小写转换时会遵循当前的区域设置。

locale.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;
use locale;

my $text = "İSTANBUL";

setlocale(LC_ALL, 'tr_TR.UTF-8');
print "Turkish locale: ", lc($text), "\n";

setlocale(LC_ALL, 'en_US.UTF-8');
print "English locale: ", lc($text), "\n";

这显示了区域设置如何影响小写转换,特别是带有圆点/无圆点的土耳其语 I。注意:区域设置必须在您的系统上可用。

$ ./locale.pl
Turkish locale: i̇stanbul
English locale: i̇stanbul

最佳实践

来源

Perl lc 文档

本教程通过实际示例介绍了 Perl 的 lc 函数,展示了它在各种场景下的用法。

作者

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

列出 所有 Perl 教程