Re: [問題] 抓字元至一維陣列或二維陣列!?
※ 引述《pttask (批踢踢.問.XD)》之銘言:
: ※ 引述《LiloHuang (相見不如懷念)》之銘言:
: : my @array = split(//,"137248 59 6 ");
: : print $array[7];
: (以下空白字元用^做表示)
: 我的data可能從文字檔讀進來就是以下狀態
: acg
: bdh
: ei
: f
: 這樣的型式
: 我試過如果split之後
: 我的$array[0]會是ab^^
: $array[1]會是cdef
: $arrat[2]會是ghi^
: 但是我所期望的會是我的$array[0]是a ...
: $array[1]是c ...
: :
: :
: $array[6]是空白字元 ...
: 這該怎麼做呢?
: 我記得是否可以把換行的資料全部轉為一行呢?
這裡要的是像 s/\n//g; 這種東西嗎
my $str = <<HERE;
acg
bdh
ei
f
HERE
$str =~ s/\n//g;
my @array = split //, $str;
print $array[6], "\n";
: : my $str ='137
: : 248
: : 59
: : 6 ';
: : for($i=0;$i<3;$i++) {
: : for($j=$i;$j<=12+$i;$j+=4) {
: : print substr($str,$j,1);
: : }
: : print $/;
: : }
: 同樣的data
: 我希望我的$array[0][0]是a
: $array[0][1]是c
: :
: :
: $array[1][2]是h
: $array[2][0]是空白字元
: 這樣的狀況
: 這樣是否是可行可為的呢?
: 麻煩前輩指點 :~)
my $str = <<HERE;
acg
bdh
ei
f
HERE
my @array;
foreach my $line ( split /\n/, $str ) {
my @arr = split //, $line;
push @array, \@arr;
}
## 印出「a-c-h-」
print join("-", $array[0][0], $array[0][1], $array[1][2], $array[2][0]),"\n";
另外關於橫直行互轉,如果可以安裝模組的話會好寫不少,
我個人是習慣用 CPAN 上的 List::MoreUtils 這個模組。
#!/usr/bin/perl -w
use strict;
use List::MoreUtils qw(each_arrayref);
my $str = <<HERE;
acg
bdh
ei
f
HERE
my @array;
foreach my $line ( split /\n/, $str ) {
my @arr = split //, $line;
push @array, \@arr;
}
## 印出「a-c-h-」
print join("-", $array[0][0], $array[0][1], $array[1][2], $array[2][0]),"\n";
my @array2;
my $ea = each_arrayref(@array);
while ( my @arr = $ea->() ) { push @array2, \@arr }
@array = @array2;
## 印出「a-b-e-g」
print join("-", $array[0][0], $array[0][1], $array[1][2], $array[2][0]),"\n";
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.23.102
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 6 篇):