将res文件夹下面的所有*.r文件的字串名与中文翻译提取出来,每个.r文件对应一张sheet,本文件中的翻译存放在本sheet中。代码很乱,但是很不想改了
经理总是叫我整理字符串,这么多的字串手动拷贝肯定是不行的,VBA也不熟,每次编程都要之前的模板拿来也折腾很久,C又写不出来,好像还是perl好用一点,我要多学点perl。
#!/usr/bin/perl
use Encode; use Spreadsheet::WriteExcel; $dir_name = "C:\\Perl\\res\\"; opendir(DIR,$dir_name) || dIE "Can 't open directory $dir_name "; @dots = readdir(DIR); print @dots; $files = @dots; # 创建一个新的EXCEL文件 my $workbook = Spreadsheet::WriteExcel->new('test.xls'); # 新建一个样式 $format = $workbook->add_format(); # Add a format $format->set_bold();#设置字体为粗体 $format->set_color('red');#设置单元格前景色为红色 $format->set_align('center');#设置单元格居中 for($index=3;$index<=$files;$index++){ $filename = @dots[$index-1]; #print $filename; #print "\n"; #print @dots; # 添加一个工作表 $worksheet = $workbook->add_worksheet($filename); $name = join "","C:\\Perl\\res\\",$filename; open(Resfile,$name) or dIE"open F error:$!"; $row = 0; while(defined($line=<Resfile>)) { @filter = split /resourcedef /,$line;#找到resourcedef 字符串切割 if(@filter == 2) { #@filter = split /(\s*= StringT \()|(=StringT \()/,@filter[1];#filter包涵两个字符串,取第二个字串以 = StringT \(切割 @filter = split /(\s*=\s*StringT\s*\()/,@filter[1];#filter包涵两个字符串,取第二个字串以 = StringT \(切割 #print @filter; chomp @filter;#去掉换行符号 $line=<Resfile>; $line=<Resfile>; $line=<Resfile>; $line=<Resfile>; $_ = $line;#读取到中文行 s/^\s+"//;#去除开头的空格和制表符以及第一个引号 s/"$//;#去掉末尾的引号 #$string = join "\t",@filter[0],encode("gbk",decode("utf8",$_));#IDS与中文符号以制表符相连,显示在同一行 #print $string; $worksheet->write($row,@filter[0]); $worksheet->write($row,1,decode('GB2312',$_))));#编码方式不对的时候,可能输出空//同下$worksheet->write($row,'星星')); #$worksheet->write($row,$_))); #$ch = join " ","",$_)); #$worksheet->write($row,"123"); $row++; } } } exit; 总结以上是内存溢出为你收集整理的今天终于把字串整理的程序完成了,明天开始清明节放假咯全部内容,希望文章能够帮你解决今天终于把字串整理的程序完成了,明天开始清明节放假咯所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)