Perl에서 정렬은 미리 정의된 함수 "sort"를 사용하여 수행할 수 있습니다. 이 함수는 전달된 배열을 정렬하기 위해 Quicksort 알고리즘을 사용합니다. 다음 기사에서는 sort() 함수를 사용하여 혼합 문자열(예: 영숫자 문자열)이 포함된 배열을 다양한 방법으로 정렬하는 방법을 소개합니다. [동영상 튜토리얼 추천: Perl 튜토리얼]
방법 1: sort()+substr() 함수
숫자를 사용하여 문자열을 비교하려면 문자열에서 숫자를 얻는 것이 매우 중요합니다. . 이 숫자를 기준으로 문자열 배열을 정렬할 수 있습니다.
substr() 함수를 사용하면 문자열에서 이러한 숫자를 추출할 수 있습니다. 이 함수는 숫자를 제외한 문자열의 문자 수를 인수로 사용합니다.
참고: 배열의 모든 영숫자 문자열은 크기가 동일해야 합니다.
예:
use strict; use 5.010; # 用字母数字字符串定义数组值 my @x = qw(prin_4 Keys_8 pubg_12); print "原数组:\n"; print join " , ", @x; # 使用sort()和substr()函数对数组进行排序 my @y = sort { substr($a, 5) <=> substr($b, 5) } @x; # 输出排序的数组 print "\n\n排序的数组:\n"; print join " , ", @y;
출력:
原数组: prin_4 , Keys_8 , pubg_12 排序的数组: prin_4 , Keys_8 , pubg_12
방법 2: sort() + 정규식
영숫자 문자열이 약간 복잡하면 위 코드를 실행하는 것이 어려운 작업이므로 순서대로 더 간단합니다. , 정규식을 사용할 수 있습니다.
예: 배열에 "Keys_8_keys"가 포함되어 있으면 이 경우를 처리하기 어렵기 때문에 문자열의 숫자를 올바르게 필터링하려면 정규식을 사용할 수 있습니다.
참고: 이 방법은 영숫자 문자열의 크기가 다른지 여부는 상관하지 않습니다.
예:
use strict; use 5.010; # Sample string to extract # number from my $str = 'Key_8_key'; # Regular expression to extract the number my ($number) = $str =~ /(\d+)/; # 输出提取的数字 print "从Key_8_key中提取的数字是:$number\n"; # 用字母数字字符串定义数组 my @x = qw(pri_4 Key_8_key pubg_12); # 排序前的数组 print "\n排序前的数组:\n"; print join " , ", sort @x; # 使用正则表达式 my @y = sort { ($a =~ /(\d+)/)[0] <=> ($b =~ /(\d+)/)[0] } @x; # 排序后数组 print "\n\n排序后数组\n"; print join " , ", @y;
출력:
从Key_8_key中提取的数字是:8 排序前的数组: Key_8_key , pri_4 , pubg_12 排序后数组 pri_4 , Key_8_key , pubg_12
참고: 배열에 일부 문자열에 숫자가 없는 문자열이 포함된 경우 숫자 대신 0을 사용할 수 있습니다. 문자열에 숫자가 없는지 확인하려면 다음 코드를 사용하세요.
my @y = sort { (($a =~ /(\d+)/)[0] || 0) (($b =~ /(\d+)/)[0] || 0) } @x;
Example:
#!/usr/bin/perl use strict; use 5.010; # 混合类型字符串的数组 my @x = qw(pri_4 Key pubg_12); # 使用正则表达式 my @y = sort { (($a =~ /(\d+)/)[0] || 0) <=> (($b =~ /(\d+)/)[0] || 0) } @x; # 输出排序的数组 print "排序后数组:\n"; print join " , ", @y;
Output:
排序后数组: Key , pri_4 , pubg_12
위는 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! !
위 내용은 Perl에서 혼합 문자열을 정렬하는 방법은 무엇입니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!