拆分字符串,获取名称相同的字符串名称及对应的个数

=================代码如下================

import java.util.TreeSet;
/**
 * 2010-12-29 16:21:00
 * @author Administrator
 *
 */
public class decompositionString {
 //接受字符串转的数组
 private String[] string;
 private String[] str;
 private Object[] obj;

 //存放文件名和数量的二维数组
 private Object[][] object;
 //用于去除重复值并且排序的TreeSet
 private TreeSet treeSet; 
        /**
         * 转换成数组,遍历HashSet中的元素,存放到Object二维数组中
         */
        public Object[][] zhuanCun(TreeSet ts,Object[][] objt){
         obj=ts.toArray();
         for (int i = 0; i < obj.length; i++) {
            String s=(String) obj[i];
            objt[i][0] = s.substring(0, s.lastIndexOf("#"));
            objt[i][1] = s.substring(s.lastIndexOf("#")+1);
    }
         return objt;
        }

 /**
    * 获取一个有规律的文件名称字符串,输出文件的名称(前缀名称相同的文件,只输出前缀名)和对应的数量
    * @param strings
    * @return
    */
 public Object[][] getNameSum(String strings){
    //名称为“xxx”的文件数量
    int count;
    //以"~"为符号,将字符串格式化存放到数组中
    string=strings.split("~");
    str=strings.split("~");
    //初始化reeSet
    treeSet=new TreeSet();
    //重新定义数组string、str中文件的名称
    for (int i = 0; i < string.length; i++) {
     string[i] = string[i].substring(0, string[i].lastIndexOf("."));
     str[i] = str[i].substring(0, str[i].lastIndexOf("."));
    }

    //获取文件名和文件名相同的文件个数,存放到二维数组中
    for (int i = 0; i < string.length; i++) {
     count=0;
     //获取同名文件的个数
     for (int j = 0; j < str.length; j++) {
        if (string[i].equals(str[j])) {
         count++;
        }
     }
     //修改数组string中的字符串
     string[i] += "#"+count;
     //将数组string存放到treeSet中(treeSet可以自动剔除重复的值并且排序)
     treeSet.add(string[i]);
    }

    //定义二维数组的长度
    object=new Object[treeSet.size()][2];
    //将treeSet中的元素存入Object二维数组object
    object=this.zhuanCun(treeSet, object);
    return object;
 }

 public static void main(String[] args) {
    //测试字符串
    String ss = "01.JPG~02.JPG~05美女.flv~05美女.avi~05美女.mp4~06.JPG~06-3.JPG~06-5.JPG~06-6.JPG~06-6.BPM";

                Decomposition dec = new Decomposition();
                Object[][] objt = dec.getNameSum(ss);
                for (int i = 0; i < objt.length; i++) {
                        System.out.print("name:"+objt[i][0] + "     ");
                        System.out.println("count:"+objt[i][1]);
                }
 }
}

猜你喜欢

转载自blog.51cto.com/1197822/2156273