3
在Perl中,我有一個字符串,大約看起來像如何在Perl中將字符串優雅地分割出來?
my $str = "one 10 two 20 three 30";
現在,我想拆分字符串轉換成字號碼對,但有 沒有成功。
我想我可以做一個
my @pairs = split /([a-z]+[^a-z]+)/, $str;
,然後將有
$pairs[0] eq 'one 10 '
$pairs[1] eq 'two 20 '
$pairs[2] eq 'three 30'
不過,我得到
$pairs[0] eq ' '
$pairs[1] eq 'one 10 '
$pairs[2] eq ' '
$pairs[3] eq 'two 20 '
$pairs[4] eq ' '
$pairs[5] eq 'three 30'
現在,我可以用grep我想要的結果:
my @pairs = grep {$_ =~ /\S/} split /([a-z]+[^a-z]+)/, $str;
但我想知道是否有更優雅的解決方案來解決這個問題。
+1爲散列解決方案,談論'在盒子外'的想法... – Zaid
哈希不是開箱即用。幾乎任何時候有人說「對」,你應該聽到「哈希」:) –
也許最好使用'split'',$ str',如果跳過前導和尾隨空白是你想要的。據說還有一些特殊的優化。 – codeholic