根据固定字符串生成固定长度的有序字符串组合集

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20086125/article/details/86491417

根据固定字符串生成固定长度的有序字符串组合集,这里是根据固定长度字符串(如:8位长度),生成至少3位长度的有序字符串组合集合,下面看实例:

import java.util.HashSet;
import java.util.Set;

/**
 * @author 
 * @Description:根据固定字符串生成固定长度的有序字符串组合集
 * @date 2019年01月15日 12:08
 */
public class StringCutMethod {
    public static String cutString(String plateNo) {
        plateNo = plateNo.toUpperCase();
        if (null == plateNo || plateNo.isEmpty()) {
            return null;
        }
        //自定义去掉第一个字符,剩下的字符串进行有序组合
        String secondString = plateNo.substring(1);
        int len = secondString.length();
        Set<String> set = new HashSet<>();
        // 3个字符
        for (int i = 0; i <= len - 3; i++) {
            set.add(secondString.substring(i, i + 3));
        }

        // 4个字符
        for (int i = 0; i <= len - 4; i++) {
            set.add(secondString.substring(i, i + 4));
        }

        // 5个字符
        for (int i = 0; i <= len - 5; i++) {
            set.add(secondString.substring(i, i + 5));
        }

        // 6个字符
        for (int i = 0; i <= len - 6; i++) {
            set.add(secondString.substring(i, i + 6));
        }

        // 特殊需求:去掉字母,再次进行有序组合
        /*StringBuilder nums = new StringBuilder();
        for (int i = 0; i < secondString.length(); i++) {
            char tmp = secondString.charAt(i);
            if (tmp >= 'A' && tmp <= 'Z') {
                continue;
            }
            nums.append(tmp);
        }
        if (nums.length() >= 3) {
            secondString = nums.toString();
            len = secondString.length();
            // 3个字符
            for (int i = 0; i <= len - 3; i++) {
                set.add(secondString.substring(i, i + 3));
            }

            //4个字符
            for (int i = 0; i <= len - 4; i++) {
                set.add(secondString.substring(i, i + 4));
            }

            //5个字符
            for (int i = 0; i <= len - 5; i++) {
                set.add(secondString.substring(i, i + 5));
            }

            // 6个字符(新能源车牌)
            for (int i = 0; i <= len - 6; i++) {
                set.add(secondString.substring(i, i + 6));
            }
        }*/

        //组合成以,隔开的字符串返回
        StringBuilder out = new StringBuilder();
        int num = 0;
        for (String word : set) {
            num++;
            if (num == 1) {
                out.append(word);
            } else {
                out.append("," + word);
            }
        }

        return out.toString();
    }

    public static void main(String[] args) {
        System.out.println(cutString("沪A2K099"));
        System.out.println(cutString("学999999"));
        System.out.println(cutString("鄂A666666"));
    }
}

执行结果如下:

K09,2K099,A2K09,A2K,K099,099,A2K099,A2K0,2K09,2K0
99999,9999,999999,999
666666,A66666,A66,A6666,6666,A666,666,66666
 

猜你喜欢

转载自blog.csdn.net/qq_20086125/article/details/86491417
今日推荐