我輸入這樣的:解析輸入來獲得特定值
"[0|0|{A=145,B=2,C=12,D=18}|!][0|0|{A=167,B=2,C=67,D=17}|.1iit][196|0|{A=244,B=6,C=67,D=12}|10:48AM][204|0|{A=9,B=201,C=61,D=11}|Calculator][66|0|{A=145,B=450,C=49,D=14}|phone]0|0|{A=145,B=2,C=12,D=18}|!0|0|{A=167,B=2,C=67,D=17}|.1iit196|0|{A=244,B=6,C=67,D=12}|10:48AM204|0|{A=9,B=201,C=61,D=11}|Calculator66|0|{A=145,B=450,C=49,D=14}|phone";
它顯示爲一條連續的線,沒有換行。我需要在[
和第一個出現的 |
之間的值中的最大值 。例如,在這種情況下,最大值是204
。一旦獲得 ,我想打印[]
之間的元素 的內容。在這種情況下,它將是「204 | 0 | {A = 9,B = 201,C = 61,D = 11} |計算器」。
我已經試過這樣的事情,但它不會去任何地方:
my @array1;
my $data = "[0|0|{A=145,B=2,C=12,D=18}|!][0|0|{A=167,B=2,C=67,D=1
+7}|.1iit][196|0|{A=244,B=6,C=67,D=12}|10:48AM][204|0|{A=9,B=201,C=61,
+D=11}|Calculator][66|0|{A=145,B=450,C=49,D=14}|phone]0|0|{A=145,B=2,C
+=12,D=18}|!0|0|{A=167,B=2,C=67,D=17}|.1iit196|0|{A=244,B=6,C=67,D=12}
+|10:48AM204|0|{A=9,B=201,C=61,D=11}|Calculator66|0|{A=145,B=450,C=49,
+D=14}|phone";
my $high = 0;
my @values = split(/\[([^\]]+)\]/,$data) ;
print "Values is @values \n";
foreach (@values) {
# I want the value that preceeds the first occurence of | in each array
# element, i.e. 0,0,196,204, etc.
my ($conf,$rest)= split(/\|/,$_);
print "Conf is $conf \n";
print "Rest is $rest \n";
push(@array1, $conf);
push (@array2, $rest);
print "Array 1 is @array1 \n";
print "Array 2 is @array2 \n";
}
$conf = highest(@array1);
my $i=0;
# I want the index value of the element that contains the highest conf value,
# in this case 204.
for (@myarray1) { last if $conf eq $_; $i++; };
print "$conf=$i\n";
# I want to print the rest of the string that was split in the same index
# position.
$rest = @array2[$i];
print "Rest is $rest \n";
# To get the highest conf value
sub highest {
my @data = @_;
my $high = 0;
for(@data) {
$high = $_ if $_ > $high;
}
$high;
}
也許我應該使用不同的方法。請有人幫助我嗎?
對不起,response..was病了,而遲到。這代碼工作般的魅力....感謝這麼多.. – MarsMax 2011-04-19 10:45:56
不客氣:) – MarcoS 2011-04-21 06:09:20
嗨marcoS ..雖然這個代碼工程完美時,有整數..最大返回完美..但如果有像[0.98736 | 0 | {A = 145,B = 2, C = 12,d = 18} |!] [0.67826 | 0 | {A = 167,B = 2,C = 67,d = 17} | .1iit] [0.76543 | 0 | {A = 244,B = 6 ,C = 67,d = 12} | 10:48AM] [0.7775 | 0 | {A = 9,B = 201,C = 61,d = 11} |計算器] [0.999 | 0 | {A = 145,B = 450,C = 49,D = 14} |電話]「..在這種情況下我沒有得到正確的值.. – MarsMax 2011-04-23 07:04:22