为了在终端中正确格式化某些文本(假设使用等宽字体),我需要计算字符串的“长度”。棘手的部分是我需要它在显示时使用的长度(以固定宽度的字符数表示)。
我最初使用length函数,但是它返回 codepoints 的数量。我还尝试使用以下方法计算字素的数量:
sub width {
my $str = shift;
my $count = 0;
while ($str =~ /\X/g) {
$count++;
}
return $count;
}
(贷记Tom Christiansen)。
但这仍然不是我所需要的,因为某些字素的字体是我的字体的双倍宽度(SF Mono Regular),例如表情符号和亚洲字符。
答案 0 :(得分:3)
经过进一步研究,我发现了Text::CharWidth CPAN模块,该模块提供了RuntimeException: No value.
功能,完全可以满足我的需求。
mbswidth