Re: [問題] 抓字元至一維陣列或二維陣列!?

看板Perl作者 (南瓜)時間17年前 (2007/08/08 12:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
※ 引述《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
文章代碼(AID): #16kKA_QC (Perl)
討論串 (同標題文章)
文章代碼(AID): #16kKA_QC (Perl)