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

Perl:如何将ASCII艺术转换为使用x运算符的精简字节形式

用Perl的x运算符压缩ASCII艺术字符串

嘿,这问题很实用!我们可以把原字符串里连续重复的字符块拆解出来,用Perl的x重复运算符逐个替换,最终拼成单行的代码。

先看你的原字符串:my $string = ' ██ ████ █';,我们先把里面的连续字符分组:

  • 开头1个空格:" " x 1
  • 紧接着2个█:"█" x 2
  • 中间1个空格:" " x 1
  • 然后4个█:"█" x 4
  • 又1个空格:" " x 1
  • 最后1个█:"█" x 1

把这些用字符串连接符.拼起来,放到print语句里,就是你要的单行形式:

print " " x 1 . "█" x 2 . " " x 1 . "█" x 4 . " " x 1 . "█" x 1;

如果你觉得x 1有点冗余,Perl里完全可以省略(毕竟"字符" x 1和直接写"字符"效果一样),简化后更简洁:

print " " . "█" x 2 . " " . "█" x 4 . " " . "█";

要是你需要处理更长的ASCII艺术字符串,手动拆解太麻烦,可以用一段小Perl代码自动生成目标代码:

my $original = ' ██ ████ █';
my $output_code = 'print ';
# 匹配连续重复的字符块,替换成对应的x运算符格式
$original =~ s/(.)\1*/"$1" x length($&) . /g;
chop $output_code; # 移除最后多余的连接符
$output_code .= ';';
print $output_code;

运行这段脚本,就能直接输出压缩后的单行print语句,批量处理超省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:52:31