这次做学习黄页 很多号码 手打太蛋疼 所以写了个小程序 很简陋 应用范围局限 记录留档以备日后完善
1 import java.io.BufferedReader; 2 import java.io.BufferedWriter; 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.FileReader; 7 import java.io.FileWriter; 8 import java.io.IOException; 9 10 import javax.print.DocFlavor.CHAR_ARRAY; 11 12 13 public class Main { 14 public static void main(String []args){ 15 try{ 16 String filer="F:/html/numbers.txt",filew="F:/html/result.txt"; 17 String line,reline = null,ch="<td>",pch="</td>",space="<td>   </td>"; 18 String pass="<tr>",ppass="</tr>"; 19 20 21 File rf=new File(filer); 22 File wf=new File(filew); 23 BufferedReader br = new BufferedReader(new FileReader(filer)); 24 BufferedWriter bw=new BufferedWriter(new FileWriter(filew)); 25 26 //int count=0; 27 28 while((line=br.readLine())!=null){ 29 char[] tem=line.toCharArray(); 30 for(int i=0;i<line.length();i++){ 31 if(tem[i]=='8'){ 32 String strtem=reline; 33 34 if(reline!=null){ 35 reline=ch; 36 reline+=strtem; 37 reline+=pch; 38 bw.write(reline); 39 bw.newLine(); 40 } 41 42 reline=ch; 43 reline+=line.substring(i); 44 reline+=pch; 45 i+=8; 46 bw.write(reline); 47 bw.newLine(); 48 reline=null; 49 50 } 51 else{ 52 if(reline==null) 53 reline=String.valueOf(tem[i]); 54 else 55 reline+=tem[i]; 56 } 57 } 58 } 59 bw.flush(); 60 bw.close(); 61 br.close(); 62 } catch (IOException e) { 63 e.printStackTrace(); 64 } 65 } 66 }
因为源文件中的号码都是以8开头的8位数字 所以判断条件是那样的
部分源文件:
教学办公室 85290783
教务办公室 85290787
学生事务办公室 85290081
外事工作办公室 85290781
外教办公室 85290080
项目办公室 85290786
语音实验室 85290776
计算机实验室 85290779
院长办公室 85290032
党委书记办公室 85290559
副院长办公室 85290031
运行结果:
<td> 教学办公室 </td>
<td>85290783</td>
<td> 教务办公室 </td>
<td>85290787</td>
<td> 学生事务办公室 </td>
<td>85290081</td>
<td> 外事工作办公室 </td>
<td>85290781</td>
<td> 外教办公室 </td>
<td>85290080</td>
<td> 项目办公室 </td>
<td>85290786</td>
<td> 语音实验室 </td>
<td>85290776</td>
<td> 计算机实验室 </td>
<td>85290779</td>
<td> 院长办公室 </td>
<td>85290032</td>
<td> 党委书记办公室 </td>
<td>85290559</td>
<td> 副院长办公室 </td>
<td>85290031</td>
完善思路:加计数器以实现两组(中文名+号码)编一<tr>
每组之间+space 分隔
不排斥一个办公室+多个号码的组合
——————————————————————————————————————————————————————————————————————
更新15-4-21
改进了多号码分割,但首尾要手动改正。
1 import java.io.BufferedReader; 2 import java.io.BufferedWriter; 3 import java.io.File; 4 import java.io.FileReader; 5 import java.io.FileWriter; 6 import java.io.IOException; 7 8 9 public class test { 10 public static void main(String []args){ 11 try{ 12 String filer="F:/html/numbers.txt",filew="F:/html/result.txt"; 13 String line,ch="<td>",pch="</td>"; 14 String pass="<tr>",ppass="</tr>"; 15 16 17 File rf=new File(filer); 18 File wf=new File(filew); 19 BufferedReader br = new BufferedReader(new FileReader(filer)); 20 BufferedWriter bw=new BufferedWriter(new FileWriter(filew)); 21 22 //split by words 23 while((line=br.readLine())!=null){ 24 char[] a=line.toCharArray(); 25 String reline=pch+ch; 26 boolean check=false; 27 for(int i=0;i<line.length();i++){ 28 if(!(a[i]>='0'&&a[i]<='9')&&a[i]!=' '){ 29 reline+=a[i]; 30 check=true; 31 32 } 33 if((a[i]>='0'&&a[i]<='9')){ 34 if(!check) {reline="/";reline+=line.substring(i);} 35 else reline+=pch+ch+line.substring(i); 36 i+=8; 37 } 38 } 39 //System.out.println(reline); 40 bw.write(reline); 41 bw.newLine(); 42 } 43 bw.flush(); 44 bw.close(); 45 br.close(); 46 }catch (IOException e) { 47 e.printStackTrace(); 48 } 49 } 50 51 }