Jump to content

IBAN: Difference between revisions

104 bytes removed ,  10 years ago
→‎{{header|Perl 6}}: shortening a bit
(→‎{{header|Perl 6}}: proposing a more idiomatic version (using a subset of Str))
(→‎{{header|Perl 6}}: shortening a bit)
Line 462:
=={{header|Perl 6}}==
<lang perl6>subset IBAN of Str where sub ($_ is copy) {
my %len = <s:g/\s//;
return False if m/<-[ 0..9 A..Z a..z ]>/; or .chars != <
AD 24 AE 23 AL 28 AT 20 AZ 28 BA 20 BE 16 BG 22 BH 22 BR 29 CH 21
CR 21 CY 28 CZ 24 DE 22 DK 18 DO 28 EE 20 ES 24 FI 18 FO 18 FR 27
Line 469 ⟶ 470:
MK 19 MR 27 MT 31 MU 30 NL 18 NO 15 PK 24 PL 28 PS 29 PT 25 RO 24
RS 22 SA 24 SE 24 SI 19 SK 24 SM 27 TN 24 TR 26 VG 24
>.hash{.substr(0,2).uc};
s:g/\s//;
return False if m/<-[ 0..9 A..Z a..z ]>/;
my $country = .substr(0,2).uc;
return False unless %len{$country} and .chars == %len{$country};
s/(.**4)(.+)/$1$0/;
Line 481 ⟶ 476:
}
 
say "$_ is { $_ ~~ IBAN ?? 'valid' !! 'invalid' }"; for
for 'GB82 WEST 1234 5698 7654 32',
'gb82GB82 westWEST 1234 5698 7654 32',
'GB82gb82 TESTwest 1234 5698 7654 32',
for 'GB82 WESTTEST 1234 5698 7654 32',;</lang>
{
say "$_ is { $_ ~~ IBAN ?? 'valid' !! 'invalid' }";
}</lang>
{{out}}
<pre>
1,934

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.