java 學習

          軟件開發相關方面的學習

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            33 Posts :: 1 Stories :: 5 Comments :: 0 Trackbacks

          testSplitCSV.java:

          import java.util.Vector;
          class  testSplitCSV{
           /**
           * Split one line of csv file
           * @return a String array results
           */
           public static String[] splitCSV(String src) throws Exception{
            if (src==null || src.equals("")) return new String[0];
            StringBuffer st=new StringBuffer();
            Vector result=new Vector();
            boolean beginWithQuote = false;
            for (int i=0;i<src.length();i++){
             char ch = src.charAt(i);
             if (ch=='\"'){
              if (beginWithQuote){
               i++;
               if (i>=src.length()){
                result.addElement(st.toString());
                st=new StringBuffer();
                beginWithQuote=false;
               }else{
                ch=src.charAt(i);
                if (ch == '\"'){
                 st.append(ch);
                }else if (ch == ','){
                 result.addElement(st.toString());
                 st=new StringBuffer();
                 beginWithQuote = false;
                }else{
                 throw new Exception("Single double-quote char mustn't exist in filed "+(result.size()+1)+" while it is begined with quote\nchar at:"+i);
                }
               }
              }else if (st.length()==0){
               beginWithQuote = true;
              }else{
               throw new Exception("Quote cannot exist in a filed which doesn't begin with quote!\nfield:"+(result.size()+1));
              }
             }else if (ch==','){
              if (beginWithQuote){
               st.append(ch);
              }else{
               result.addElement(st.toString());
               st=new StringBuffer();
               beginWithQuote = false;
              }
             }else{
              st.append(ch);
             }
            }
            if (st.length()!=0){
             if (beginWithQuote){
              throw new Exception("last field is begin with but not end with double quote");
             }else{
              result.addElement(st.toString());
             }
            }
            String rs[] = new String[result.size()];
            for (int i=0;i<rs.length;i++){
             rs[i]=(String)result.elementAt(i);
            }
           return rs;
           }

           public static void main(String[] args){
            String src1=  "\"fh,zg\",sdf,\"asfs,\",\",dsdf\",\"aadf\"\"\",\"\"\"hdfg\",\"fgh\"\"dgnh\",hgfg'dfh,\"asdfa\"\"\"\"\",\"\"\"\"\"fgjhg\",\"gfhg\"\"\"\"hb\"";
            try {
             String[] Ret = splitCSV(src1);
             for (int i=0;i<Ret.length;i++){
              System.out.println(i+": "+Ret[i]);
             }
            }
            catch(Exception e) {
             e.printStackTrace();
            }
           }
          }

          posted on 2006-02-27 17:28 zxf 閱讀(2020) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 松桃| 青田县| 扎鲁特旗| 石楼县| 长海县| 达州市| 云和县| 察雅县| 乐陵市| 泰兴市| 宁都县| 连山| 北辰区| 安图县| 通化市| 平和县| 上栗县| 博爱县| 宝应县| 庆安县| 大港区| 札达县| 公安县| 乌苏市| 商南县| 商丘市| 蓬莱市| 囊谦县| 惠水县| 临海市| 曲靖市| 峡江县| 略阳县| 营口市| 达尔| 泰顺县| 武陟县| 潮安县| 察雅县| 如皋市| 长丰县|