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

如何在Raku中右对齐字符串并在超长时从左侧截断?

解决方案

核心思路是先截取字符串的最后N个字符(N为目标宽度),再进行右对齐格式化,既满足过长时左侧截断的需求,又避免了substr长度不足报错的问题——Raku的substr支持负索引,且会自动处理长度不足的场景:

代码实现

my $xs = (0..4).kv.map(-> $i, $x { ('a'..'z')[0..$i-1].join });
$xs.map({ sprintf '%3s', $_.substr(-3, 3) }).raku;

代码说明

  • $_.substr(-3, 3):从字符串末尾开始取最多3个字符。若字符串长度小于3,直接返回整个字符串(无报错);若长度超过3,自动截断左侧多余部分,保留最后3个字符。
  • sprintf '%3s':将处理后的字符串格式化为宽度3的右对齐文本,不足部分用左侧空格填充。

运行后输出结果完全符合预期:

("   ", "  a", " ab", "abc", "bcd").Seq

如果需要调整目标宽度,只需把代码中两处的3替换为对应数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:30:43