我有一個輸入變量,比如$a
。 $a
可以是數字或字符串,也可以是兩者的組合。剝離perl中的數字和字母表
我的問題是如何剝離變量來分隔數字和字母字符?
示例;
$a can be 'AB9'
在這裏,我應該能夠將'AB'存儲在一個變量中,'9'存儲在其他中。
我該怎麼做?
我有一個輸入變量,比如$a
。 $a
可以是數字或字符串,也可以是兩者的組合。剝離perl中的數字和字母表
我的問題是如何剝離變量來分隔數字和字母字符?
示例;
$a can be 'AB9'
在這裏,我應該能夠將'AB'存儲在一個變量中,'9'存儲在其他中。
我該怎麼做?
選中此版本,它可以在一個變量中使用1個或多個數字和字母字符。
#!/usr/bin/perl
use strict;
use Data::Dumper;
my $var = '11a';
my (@digits, @alphabetics);
while ($var =~ /([a-zA-Z]+)/g) {
push @alphabetics, $1;
}
while ($var =~ /(\d+)/g) {
push @digits, $1;
}
print Dumper(\@alphabetics);
print Dumper(\@digits);
下面就來表達它很快的一種方法:
my ($digits) = $input =~ /(\d+)/;
my ($alpha) = $input =~ /([a-z]+)/i;
say 'digits: ' . ($digits // 'none');
say 'non-digits: ' . ($alpha // 'none');
用在這裏列表上下文匹配操作符是很重要的,否則,如果匹配成功它將返回。
如果你想獲得所有出現在輸入字符串,只需更改在列表環境的標量變量,以適當的數組:
my @digits = $input =~ /(\d+)/g;
my @alpha = $input =~ /([a-z]+)/gi;
say 'digits: ' . join ', ' => @digits;
say 'non-digits: ' . join ', ' => @alpha;
對於my $input = '42AB17C'
,輸出
digits: 42, 17
non-digits: AB, C
謝謝你的回答:) –
那作品。非常感謝:) 聲明數組數字時出現錯字。 聲明爲@數字而不是@數字。 –
謝謝!我修正了錯字:) –