You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Perl实现半角字符到全角字符的转换?

Perl半角字符转全角字符(普通字符转宽字符)实现方案

你之前的代码问题出在直接对字符串'A'做数值运算时,Perl会将非数字字符串解析为0,导致0 + 0xfee0得到的字符并非预期的全角'A'。正确的做法是先通过ord()获取字符的Unicode码点,再进行偏移计算。

1. 单个字符的正确转换示例

binmode STDOUT, ":utf8";

my $letter = 'A';
my $lw = chr(ord($letter) + 0xfee0);
print "Hello $lw ($letter)!\n";

执行后会输出符合预期的:Hello A (A)!

2. 批量字符串转换(含空格处理)

要实现!abc ABC!转!abc ABC!,需要注意半角空格的全角对应字符是Unicode码点0x3000(不是半角空格加0xfee0),需单独处理:

binmode STDOUT, ":utf8";

sub half_to_full {
    my $str = shift;
    # 匹配字母、数字及常见半角标点,转换为全角
    $str =~ s/(\w|\d|[\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e])/chr(ord($1) + 0xfee0)/eg;
    # 半角空格替换为全角空格
    $str =~ s/ /\x{3000}/g;
    return $str;
}

my $input = '!abc ABC!';
my $output = half_to_full($input);
print "$output\n"; # 输出:!abc ABC!

内容的提问来源于stack exchange,提问作者xpt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 12:42:40