如果字符串长于设定值,我正在尝试使用 perl 截断选择输入选项中的字符串,但我无法使其正常工作。
my $value = defined $option->{value} ? $option->{value} : '';
my $maxValueLength = 50;
if ($value.length > $maxValueLength) {
$value = substr $value, 0, $maxValueLength + '...';
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是正则表达式
$string =~ s/.{$maxLength}\K.*/.../;
Run Code Online (Sandbox Code Playgroud)
它匹配.给定次数的任何字符 ( ) ( {N}, 这里$maxLength), 中的第一个$maxLength字符是什么$string;然后\K让它“忘记”之前的所有匹配项,以便以后不会被替换。然后匹配的字符串的其余部分被替换为...
见在perlre环视断言的\K。
这确实为一个简单的任务启动了正则表达式引擎,但它不需要任何条件——如果字符串短于最大长度,则正则表达式将不匹配并且没有任何反应。