`
yzz9i
  • 浏览: 221043 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

txt解析经典测试(2)

阅读更多
package com.file;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class ResolveFiles {

    public static String readFileContent(String filepath) {  
    	//读取每一行保存在List 中
    	ArrayList<String> records=new ArrayList<String>();
        try {  
         
            BufferedReader br = null; 
//          new BufferedReader(new FileReader(filepath));  
            InputStreamReader reader = new InputStreamReader(new FileInputStream(new File(filepath)),"GB2312");
            br = new BufferedReader(reader);
            //基元素: "sms,deliver,"10657502022321","","","2011.07.28 11:04","","彭元彬,朱宇英/CA1509北京首都机场-杭州萧山机场2011-07-31 07:55/起飞/总票款1420.0元/保险费0.0元/票号999-2155782847999-2155782848/请持有效身份证件到机场办理手续,如有疑问请致电4008100999-8[中国国航]"  
            String s,str;  //每条数据   
            
            while((s = br.readLine())!=null){  
                //System.out.println("数据记录为:"+s);  
                records.add(s);  //把每条记录添加到list中
                System.out.println("我  要  看  到  的:"+s);
              //  String bString=s.replace("/",",(?=\")|(?<=\"),"");
               // System.out.println("我  要  看  到  的bString:"+bString);
                if (s.indexOf("/")>0) {  //把航变信息排除  (不含"/")
					
				
                String[] recArray = parseRecord(s);  // 按”""“ 截取  
                
                if (recArray.length>=6) {  //该条记录长度  
                    String p=recArray[6];  //得到第六个数组  
                    ArrayList<String> records_z=new ArrayList<String>();
                    records_z.add(p);  //把每条记录的二级第五个元素添加到list中
                    System.out.println("================="+recArray[4]);  //得到
                    
                    String[] ps=parseRecord(p);//获取票号所属引号组  
 
                    //子元素:"殷俊/CA4107成都双流机场-北京首都机场2011-08-05 10:00/起飞/总票款1350.0元/保险费0.0元/票号999-2155782063/请持有效身份证件到机场办理手续,如有疑问请致电4008100999-8[中国国航]"  
                    for (int i = 0; i < ps.length; i++) {  
                        System.out.println("P-P-P-P-"+ps[i]+"ps.length:"+ps.length); 
                        System.out.println("ppppp---pppppp---pppp:"+ps[i].replace("/", "\",\""));
                        
                        
                        //截断  
                        //按“/”截取值存入数组PP中  
                        for (int j = 0; j < ps.length; j++) {  
                            String[] pa=subRecord(ps[j]); // 按"/" 截取  
                            //System.out.println(""+pa[]);
                            System.out.println("pa:"+pa.length);  
                            //子元素:"陈超,缪小红,尹纤黛/CA1726广州白云机场-杭州萧山机场2011-07-29 18:20/起飞/总票款2310.0元/保险费0.0元/票号999-2155782014999-2155782015999-2155782016/请持有效身份证件到机场办理手续,如有疑问请致电4008100999-8[中国国航]"  
                            for (int k = 0; k < pa.length; k++) {  
                            	String sk=pa[k];  //定义 存储
                            	if (sk!=null) {
									if (sk.indexOf("\"")==0) { //去掉开头的引号
										sk = sk.substring(1,sk.length());
									}
								}
                            	pa[k]=sk;
                                System.out.println("二级元素(5)pa."+k+":"+pa[k]);  
                            }  
                              
                            if (pa.length>=5) { //子子元素: 票号999-2155782063...  
                                System.out.println("二级元素(5)-子元素(5)pa:"+j+i+"-----"+pa[5]);  
                                //对票号处理  票号999-2155782014999-2155782015999-2155782016 ...  
                                String sr=pa[5].substring(2); //截取后如:999-2155782014999-2155782015999-2155782016 ...  
                                int begin = 0;  
                                int end = 14;  
                                while(end<=sr.length()) {  
                                    String b = sr.substring(begin,end);  
                                    System.out.println("==========票号截取值==========:"+b);  
                                    begin += 14;  
                                    end += 14;  
                                }  
                            }  
                        }  
                    }
                    /**aaaaa
                     * */
                    //处理每一条记录生成SQL语句  并保存为对象 
                    //"梁辰/CA4194北京首都机场-成都双流机场2011-09-14 22:00/起飞/总票款1100.0元/保险费0.0元/票号999-2155782995/请持有效身份证件到机场办理手续,如有疑问请致电4008100999-8[中国国航]"
                    ArrayList<String> record_zList=new ArrayList<String>();
                    for (int i = 0; i < records_z.size(); i++) {
            			String record=records_z.get(i);
            			String[] recArray_z = minusQuotation(record.split("/"));
            			for (int k = 0; k < ps.length; k++) {  
                            String[] pa_z=subRecord(ps[k]); // 按"/" 截取  
                            if (pa_z.length>=5) { //子子元素: 票号999-2155782063...  
                                System.out.println("2ci二级元素(5)-子元素(5)pa:"+k+"-----"+pa_z[5]);  
                                //对票号处理  票号999-2155782014999-2155782015999-2155782016 ...  
                                String sr=pa_z[5].substring(2); //截取后如:999-2155782014999-2155782015999-2155782016 ...  
                                int begin = 0;  
                                int end = 14;  
                                while(end<=sr.length()) {  
                                    String b = sr.substring(begin,end);  
                                    System.out.println("==========票号截取值z==========:"+b);  
                                    begin += 14;  
                                    end += 14;  
                                }  
                            }
            			}
                        for (int j = 0; j < recArray_z.length; j++) {
            				System.out.println(recArray_z[j]);
						}
            			
            			
            		}
                }  
                }
                /*****
                 * 
                 * 下面这段不可删除    请勿动
                 * 
                 * 
                 * 
                int i=0;  
                for ( i = 0; i < recArray.length; i++) {  
                    System.out.println("二级元素"+i+": "+recArray[i]);  
                    String yString=recArray[i];  
                    if (i==recArray.length-1) {  
                        str=recArray[i];  
                        String[] subArray=subRecord(str);  
                        //System.out.println("eeee"+subArray);  
                        int pi=subArray.length-2;  
                        for(int j=0;j<subArray.length;j++){  
                        	String sa=subArray[j];
                        	if (sa != null) {
								if (sa.indexOf("\"")==0) {
									sa = sa.substring(1,sa.length());//去掉开头的引号
								}
							}
                        	subArray[j]=sa;
                            System.out.println("二级元素(5)-子元素:"+j+":"+subArray[j]);  
                           
                            if (j==subArray.length-7) {  
                                String subString=subArray[j];  
                                String[] ssubArray=ssubRcord(subString);  
                                for (int k = 0; k < ssubArray.length; k++) {  
                                	String st=ssubArray[k];
                                	if (st != null) {
										if (st.indexOf("\"")==0) {
											st=st.substring(1,st.length());
										}
									}
                                	ssubArray[k]=st;
                                    System.out.println("==========二级元素(5)-子元素(0)k=========="+k+":"+ssubArray[k]);  
                                }  
                      
                                
                                System.out.println("yString:"+yString);  
                                  
                            }  
                              
                        }  
                          
                    }  
                      
                }  
                
                *
                *  此段不可删除  请勿动
                *  
                */    
              
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }
        
       
        
        
        
        return null;  
    }  
    public static String[] parseRecord(String record) {      
        String[] recArray = record.split(",(?=\")|(?<=\"),");//按引号截取  
  
        //String[] recArray2 = record.  
        return recArray;  
    }  
    public static String[] subRecord(String subrString){  
        String[] subArray=subrString.split("/");//按斜杠截取  
        return subArray;  
    }  
   
    public static String[] ssubRcord(String sstr){  
        String[] ssubArray=sstr.split(",");//按逗号截取  
        return ssubArray;  
          
    }  
   
      /*
       * 截取票号方法
       * */
    public static String[] subStrings(String sstrr){ //对票号截取处理  
        //String string="票号999-2155782014999-2155782015999-2155782016";  
        //String str="999-";  
          
        String sr=sstrr.substring(2);  
        int begin = 0;  
        int end = 14;  
        while(end<=sr.length()) {  
            String b = sr.substring(begin,end);  
            System.out.println(b);  
            begin += 14;  
            end += 14;  
        }  
        return null;  
    }  
    //批量执行SQL
    public static int batchExecuteSql(ArrayList<String> sqlList) {
		System.out.println("接下来可以执行SQL语句或保存对象");
		System.out.println("========批量执行SQL语句==========");
		System.out.println("将所有语句加入到Statment stat中");
		for (int i = 0;i<sqlList.size();i++) {
			String string = sqlList.get(i);
			System.out.println("通过stat.addBatch(sql)来加入语句"+i+": '"+string+"'");
		}
		System.out.println("通过stat.executeBatch()来执行所有的SQL语句");
		System.out.println("========批量执行SQL语句结束==========");
		//int count = stat.executeBatch();
		//return count;//返回执行的语句数量
		return sqlList.size();
	}
    //生成每条记录的SQL
	public static String getRecordSql(String[] recArray) {
		if (null==recArray) {
			return null;
		}
		String recordSql = "insert into tablename (sms,no,time) values('"+recArray[0]+"','"+recArray[2]+"','"+recArray[5]+"')";
		return recordSql;
	}
    /**
     * 去掉数组中每个元素的开头和结尾的引号
     * 
     * */
    public static String[] minusQuotation(String[] recArray) {
		for (int i = 0; i < recArray.length; i++) {
			String str = recArray[i];
			if (null!=str) {
				if(str.indexOf( "\"")==0)
					str = str.substring(1,str.length());//去掉开头的分号
				if(str.lastIndexOf("\"")==(str.length()-1))
					str = str.substring(0,str.length()-1); //去掉最后的分号
			}
			recArray[i] = str;
		}
		return recArray;
	}
      
    public static void main(String[] args) {  
        String filepath = "E:\\sxySMS\\smstest(1).txt";  
        readFileContent(filepath);  
        String s="票号999-2155782014999-21557820,15999-2155782016";  
        String[] b=s.split(",");
        for (int i = 0; i < b.length; i++) {
        	System.out.println(b[i]);
		}
          
          
    }  
	
}


分享到:
评论

相关推荐

    C语言txt文件解析.zip

    本资源"**C语言txt文件解析.zip**"提供了一种使用C语言读写TXT文件的方法,特别关注如何处理字符串拆分,以及根据行列号选取特定内容。下面将详细介绍这个主题及其相关知识点。 首先,`readTXT.cpp`是C++源代码文件...

    robots.txt解析器_Ruby_下载.zip

    这个压缩包“robots.txt解析器_Ruby_下载.zip”显然包含了一个使用Ruby编程语言编写的用于解析`robots.txt`文件的工具。让我们深入探讨一下`robots.txt`文件、Ruby编程语言以及解析器的相关知识。 `robots.txt` ...

    winform测试数据解析

    当我们谈论“Winform测试数据解析”时,我们关注的是如何在WinForm应用中处理和解析测试数据,这通常涉及到数据的读取、处理和展示。在这个场景下,“读写文件”标签暗示我们将探讨如何通过WinForm来读取和写入文件...

    JavaTxt解析文本代码或输出指定编码文本

    `JavaTxt解析文本代码或输出指定编码文本`这个主题聚焦于如何使用Java有效地识别和处理不同编码类型的TXT文件。这个工具类,如`TxtEncodingDetect.java`所示,提供了一种方法来检测和解析文本文件的编码格式,比如...

    适用于YoloV5训练和测试的coco数据集标签文件(train2017.txt和val2017.txt)

    总之,这个资源提供了COCO数据集2017版针对YoloV5训练和评估的预处理标签文件,以及可能的原始图像数据,简化了数据准备过程,使得研究人员和开发者能更便捷地利用COCO数据集来训练和测试YoloV5模型,提升目标检测...

    Q_GDW376.2报文解析器.rar

    2. "Readme_download.txt" - 这是下载和安装说明,可能包含了软件的版本信息,系统要求,安装步骤,以及任何需要注意的事项。在安装和使用软件之前,应仔细阅读此文件以确保顺利进行。 3. "376_2报文解析器V1.0.exe...

    匣子解析v1.3.9 专业版.txt打包整理.zip

    "匣子解析v1.3.9 专业版.txt打包整理.zip"是一个压缩包文件,其中包含的内容主要是关于“匣子解析”的专业版版本1.3.9的一些文本信息。这个版本可能是某个软件或工具的更新,专注于数据解析或者信息处理。在IT行业中...

    HL7解析 Java

    2. **消息解析**:HAPI提供了一个解析器,可以将HL7格式的字符串转换为可操作的对象模型。例如,`org.hapi.hl7v2.HL7Parser`类的`parse`方法可用于解析HL7消息。 3. **消息构造**:同样,HAPI也允许构建新的HL7消息...

    xml.rar_XML c语言_c语言 xml_resolver_xml解析 c_解析xml

    “file.txt”文件可能是XML数据的示例,或者用于测试解析器性能和正确性的输入文件。开发者可以通过这个文件测试解析器是否能正确解析XML文档的元素、属性、文本内容以及处理命名空间、实体引用等特性。 解析XML的...

    Python-用于解析包含Mimikatz输出的txt文件的Python脚本

    这篇描述提到的"Python-用于解析包含Mimikatz输出的txt文件的Python脚本"是一个专门设计用来处理这些txt日志的工具。通过编写这样的脚本,我们可以自动化处理和分析Mimikatz生成的数据,从而更高效地识别潜在的安全...

    蓝奏云直链获取在线解析网站源码 蓝奏云链接解析 本地API接口.zip

    2. **index.html**:通常是网站的主页面,可能包含了解析服务的前端界面,用户可以通过这个页面输入蓝奏云链接进行解析。 3. **jx.php**:这是一个PHP脚本,很可能实现了解析逻辑。PHP是一种常用的服务器端脚本语言...

    性能测试学习计划.txt

    学习一种编程语言,如Java或Python,这有助于编写脚本、解析日志等。 #### 3.2 了解操作系统原理 熟悉至少一种操作系统(Windows/Linux),理解其内部机制及系统调优方法。 ### 四、数据库性能监控 #### 4.1 SQL ...

    C++解析xml源码

    "evaluationlicense.txt"文件可能是XML解析器的许可证信息或者测试用例的一部分,它通常包含关于软件授权和使用条件的法律条款。 至于"Test"目录,它可能包含了一些测试用例,用于验证`Markup`类的功能是否正确。...

    java创建和解析PDF

    本篇将详细介绍如何在Java环境下创建PDF文件以及将PDF解析为TXT文本。 首先,我们来看如何使用Java创建PDF文件。通常,我们可以借助Apache PDFBox、iText或 Flying Saucer 这样的第三方库。以Apache PDFBox为例,它...

    测试报文.txt

    具体到本案例,“测试报文.txt”显然是一种用于移动开放平台的报文测试文件,它的主要功能是提高开发效率。 ### 二、XML格式的理解与解析 #### 1. **XML(Extensible Markup Language)** XML 是一种标记语言,...

    vue2-org-tree-节点增删改查和上传txt文本解析

    总结来说,"vue2-org-tree-节点增删改查和上传txt文本解析"项目关注的是使用Vue2的组织结构树组件实现数据操作,并处理从文本文件导入数据的问题。在实现过程中,确保每个节点都有父级ID是至关重要的,这有助于优化...

    来自于NLPCC2013,解析成txt文件 不均衡分类 中文情感分析7类情感.zip

    来自于NLPCC2013,解析后每一行为 情感\t句子 共有七类情感,且分布不均衡,划分训练集和测试集后数据数量为 1488 anger_data.txt 186 anger_test.txt 186 anger_val.txt 8:1:1 2459 disgust_data.txt 307disgust_...

    windows下ramdump-parse解析tools.zip

    例如,命令可能类似于`ramdump-parse -i dump_file.dmp -o parsed_output.txt`,这里的`dump_file.dmp`是内存dump文件,`parsed_output.txt`是解析后的输出文件。 4. **分析结果**:解析后的输出文件通常包含大量...

    国网1376.2规约报文解析工具V0.0.1.rar

    软件介绍: QGDW1376.2解析可打开报文进行解析,结果输出保存。GDW1376_2.dllQGW1376_2.csprojQGW1376_2.exeUpgradeLog.htm测试报文.txt内附测试报文。

    8977771cc109gps.rar_GPS信号解析_gps signal simulator_串口 报文解析

    在描述中提到的“GPS信号模拟器”是一个软件工具,它能模拟真实的GPS信号,为开发者或测试者提供一个可控的环境,以测试设备或应用的GPS接收和处理能力。这种模拟器通常会生成符合标准的NMEA(National Marine ...

Global site tag (gtag.js) - Google Analytics