作者WalkingIce (会走路的冰块)
看板perl
标题Re: [问题] 读档案到阵列
时间Tue Jul 3 14:35:57 2007
※ 引述《handsomegirl (薰)》之铭言:
: ※ 引述《WalkingIce (会走路的冰块)》之铭言:
: : 假设 sample 是这样
: : 33996344 33996351 GB
: : 33996352 50331647 XD
: : 50331648 68257567 US
: : 68257568 68257599 CA
: : 或着你可以设定一个变数 $switch = 0; // 0=关闭 1=打开
: : foreach(@array) {
: : $switch = 1 if (比对成功);
: : print $_ if $switch;
: : }
: 这两段程式我都试过了,都成功,非常感谢,之前都没想到用switch的方式
: 不过後来想到,若是我搜寻us 我要印出US本身 跟下面的CA 前面的数字我不要
: 是要以二维阵列的方式来作吗?
: 有哪个关键字可以读那个字串的阵列值?
: 然後可以知道这个值从哪个档案来吗?
啊,问题又看不太懂了 (我的中文真是没有我想像中好)
如果你只是要印出 US 那两个字,直接 print 不就行了吗? @.@
print "US" if (比对成功);
我假设「要印出US本身 跟下面的CA 前面的数字我不要」的断句如下
「要印出US本身跟下面的CA,前面的数字我不要」
所以结果是要这样吧
US
CA
那先想想为什麽要弄个 switch?
switch 打开代表接下来的东西才是我们真正关心的,所以可以这麽写
foreach (@array) {
$switch = 1 if (比对成功);
if($switch) {
上上下下左右左右 AB ...;
}
}
只有 switch 打开後才会进到那一段 if 去,在此之前的我们都 don't care
於是问题就变成了「如何处理我们真正关心的内容」
以这个为例,那段任天堂经典秘技就可以写成
print $1 if $_ =~ m{\d+\t\d+\t(.+)}; #数字<Tab>数字<Tab>文字
而你自己的 case 要怎麽去处理字串就自己去翻正规表示式罗
如果你真的很想知道,US 到底出现在哪几行里面
我不知道 foreach 有没有一个预设变数储存着 array index
但是我会用乡民土炮法去把它找出来
my @index;
my $count = 0;
foreach (@array) {
push (@index,$count) if (比对成功);
$count ++;
}
每跑一次 loop, $count 也会增加一次,刚好就是 array 的 index 值
接着把那几行全部放进 @index 里面。
值从哪个档案来?
这个我真的完全看不懂了.....[失意体前屈]
--
我想你会衰成这样都是我害的
---- Tizzy Mac
紧张的麦金塔?这是谁(._.?)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.128.98.6