由于程序的需要,需要模糊匹配一些字符串,因为上游数据由于字段长度的限制,会随机舍去字符串的一部分字符串的数据,舍去的位置不固定,也不一定是连续的,比如"APCFH2ZDVEQ-SU22-24H05"舍去一定位数后变成"APCFH2ZDVEQSU24H05",或者"APCFH2ZDVEQSU22-24H03"舍去一定位数变成"APCFH2ZDVEQ-24H03",这样的数据将会判定有效,当获取的字符串出现原字符串的未出现的字符,或字符顺序错误将会判断为无效,有没有什么好的算法?
大家有什么方法贴出来

解决方案 »

  1.   

    新旧的拆开成一个一个的字符都放到List中
    List有一个方法containAll().判断是否包括了所有的.
    如果旧的没有全部包括新的,就是表示新的出现了旧的没有出现的字符
      

  2.   

    我写了一个方法,也不知道对不对。呵呵。/**
         * 
         * @param befor 转换前的串
         * @param after 转换后的串
         * @return
         */
        public static boolean checkString(String befor, String after)
        {
            if(null == befor || null == after || "".equals(befor.trim()) || "".equals(after.trim()))
            {
                return false;
            }
            
            int bl = befor.length();
            int al = after.length();
            
            for(int bi = 0,ai = 0;bi < al;ai++)
            {
                if(bi == al || ai == bl)
                {
                    return false;
                }
                else if(befor.charAt(ai) == after.charAt(bi))
                {
                    bi++;
                }
            }
            return true;
        }