Perl CPAN中最长的字符串?
显示如何查找数组中最长的字符串 这个功能在CPAN模块中是否可以像“最长的字符串”这样使用?要复制这段代码似乎很奇怪。也似乎是一个普遍有用的潜艇Perl CPAN中最长的字符串?,perl,Perl,显示如何查找数组中最长的字符串 这个功能在CPAN模块中是否可以像“最长的字符串”这样使用?要复制这段代码似乎很奇怪。也似乎是一个普遍有用的潜艇 为了进行比较,这里讨论了如何在Python中实现这一点。我想您会发现CPAN更适合于大量代码(即,多个行程序) 一、 例如,我更愿意让CPAN解决我的大问题,比如数据库访问或各种数值方法和数据结构。我不同意。查找最长的字符串是很容易实现的,也不是经常需要的。如果有什么区别的话,一个更通用的函数可能会进入(我想)List::MoreUtils。像这样:
为了进行比较,这里讨论了如何在Python中实现这一点。我想您会发现CPAN更适合于大量代码(即,多个行程序)
一、 例如,我更愿意让CPAN解决我的大问题,比如数据库访问或各种数值方法和数据结构。我不同意。查找最长的字符串是很容易实现的,也不是经常需要的。如果有什么区别的话,一个更通用的函数可能会进入(我想)
List::MoreUtils
。像这样:
my $longest = find_max { length } @array;
其中find_max有一个
(&@)
原型,并从链接的帖子中实现算法 注意List::MoreUtils
的描述:
MoreUtils提供了一些简单的
但通常需要的功能
不打算进入的列表
列表::Util
列表::MoreUtils中的minmax子项可以工作,但是比较数值,而不是字符串长度。但是,minmax可以很容易地进行调整,以比较其参数的长度
sub minmax_stringlength (@) {
return unless @_;
my $min = my $max = $_[0];
for ( my $i = 1; $i < @_; $i += 2 ) {
if ( length($_[$i-1]) <= length($_[$i]) ) {
$min = $_[$i-1] if length($min) > length($_[$i-1]);
$max = $_[$i] if length($max) < length($_[$i]);
} else {
$min = $_[$i] if length($min) > length($_[$i]);
$max = $_[$i-1] if length($max) < length($_[$i-1]);
}
}
if ( @_ & 1 ) {
my $i = $#_;
if (length($_[$i-1]) <= length($_[$i])) {
$min = $_[$i-1] if length($min) > length($_[$i-1]);
$max = $_[$i] if length($max) < length($_[$i]);
} else {
$min = $_[$i] if length($min) > length($_[$i]);
$max = $_[$i-1] if length($max) < length($_[$i-1]);
}
}
return ($min, $max);
}
因此,如果OP发现自己经常使用find max,他可以使用他的许可证并修改MoreUtils以提供该功能
如果有更了解情况的人可以验证上述方法是否有效,请执行。FWIW Perl 6解决方案只是:
my $longest = @list_of_strings.max: *.chars
无需模块:-)您建议如何使用
minmax
返回长度最长的字符串?@ikegami:啊,谢谢您指出这一点。不知道为什么,但我有一个错误的假设,即minmax会自动处理字符串。我编辑了我的回复,希望能更有用。
my $longest = @list_of_strings.max: *.chars