- 论坛徽章:
- 0
|
大虾们好。最近帮忙写一个格式转换的脚本。
源格式是 : 行列不定
省份 城市 长途区号 1390H1H2H3 1380H1H2H3 1370H1H2H3 1360H1H2H3 1350H1H2H3
安徽 宿州 557 "557,567" 557 557 557 "058,557"
。。。。。。。。。。。。
目标格式是 :
H码,区号,城市
1390557,557,宿州
。。。。。。。。。。。
我写个两天基本上完成了该功能。但是还是存在一些缺陷请大家帮忙看看。
1、源文件是XLS的,我是先导table分割的txt文件,然后再处理,生成目标文件;
2、感觉写的有些复杂了,能有更简介的方式吗?
我的代码如下:请大虾们帮忙了
#!F:\Program Files\Perl\bin\perl.exe
sub genHcode{
my $HcodePatten =$_[0] ;
my $HcodeParam =$_[1] ;
my $AreaCode = $_[2] ;
my $CityName = $_[3] ;
$HcodePatten =~ s/\"|\n//g ;
$HcodeParam =~ s/\"|\n//g ;
my @HcodeSet ;
my $Item;
my $val1 = "" ;
my $val2 = "" ;
my $CodeHead = substr($HcodePatten,0,index($HcodePatten ,"H"));
my $HCount = ( $HcodePatten =~ tr/H//);
my $count = 0 ;
my $i = 0;
my @tmpHcodeSet=split(',',$HcodeParam) ;
foreach $Item(@tmpHcodeSet){
$count = ( $Item =~ tr/-//);
if ( $count > 0 ){
for(($val1 ,$val2) = split('-',$Item);$val1 <=$val2 ;$val1++)
{
for($i = $HCount - length($val1); $i > 0;$i-- ) {$val1= "0".$val1 ;}
push (@HcodeSet ,"$CodeHead$val1,$AreaCode,$CityName\n");
}
}else
{
$val1 =$Item;
for($i = $HCount - length($val1); $i>0;$i-- ) { $val1="0".$val1 ;}
push @HcodeSet , "$CodeHead$val1,$AreaCode,$CityName\n";
}
}
return (@HcodeSet);
}
################################main#############################
print "Hello, World...\n";
########################获取文件中信息###########################
open (FILE , "D:\\CODE\\perl\\test1.txt");
my @HCodeInfo = <FILE> ;
my $RecordCount = @HCodeInfo;
close(FILE);
print " $HCodeInfo[0] \n";
#################################################################
my @HCodesets ;
my @HeadInfo = split(' ', $HCodeInfo[0]);
my $HeadInfoCount =@HeadInfo;
#################################################################
for(my $i = 1 ; $i < $RecordCount ;$i++){
@RecordInfo = split(' ', $HCodeInfo[$i]);
for(my $j = 3 ; $j <= $HeadInfoCount ;$j++ ){
push @HCodesets , genHcode( $HeadInfo[$j],$RecordInfo[$j] ,$RecordInfo[2],$RecordInfo[1] );
}
}
open(OUTPUT, "> D:\\CODE\\perl\\testHCode.txt");
print OUTPUT @HCodesets;
close(OUTPUT);
[ 本帖最后由 roywangt 于 2006-7-27 07:15 编辑 ] |
|