获取格式化查询字符串

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了获取格式化查询字符串脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
package com;

import java.util.*;

public class Methodtest {
    public static void main(String[] args) {
        System.out.PRintln(getFormatStr("LW53_CQ_0207"));
    }

    /**
     * 获取查询字符串的格式化查询列表
     * @param queryStr
     * @return
     */
    static List<String> getFormatStr(String queryStr){
        Set<String> strKeySet = new TreeSet(){{
            add("_");
            add(".");
            add("-");
        }};
        Set<Character> charKeySet = new TreeSet(){{
            add('_');
            add('.');
            add('-');
        }};
        List<String> resultList = new ArrayList();
        List<;map<Integer,Character>> posITionList = new ArrayList();
        if (!containKey(queryStr,strKeySet)){
            resultList.add(queryStr);
            return resultList;
        }
        char[] queryStrChar = queryStr.toCharArray();

        for (int i = 0; i < queryStrChar.length; i++) {
            if (isKey(queryStrChar[i],charKeySet)) {
                HashMap map = new HashMap();
                map.put(i,queryStrChar[i]);
                positionList.add(map);
            }
        }
        Collections.reverse(positionList);
        StringBuilder sb = new StringBuilder(queryStr);
        for (Map<Integer, Character> positionMap : positionList) {
            resultList.add(sb.toString());
            sb = new StringBuilder(addQueryStr(resultList,sb,positionMap,charKeySet));
        }
        resultList.add(sb.toString());

        return resultList;
    }

    /**
     * 判断字符串是否包含关键字
     * @param str
     * @param strKeySet
     * @return
     */
    static boolean containKey(String str, Set<String> strKeySet){
        for (String s : strKeySet) {
            if (str.contains(s)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 判断当前字符是否是key
     * @param str
     * @param keySet
     * @return
     */
    static boolean isKey(char str,Set<Character> keySet){
        if (keySet.contains(str))
            return true;
        return false;
    }

    /**
     * 获取同级别长度格式化查询字符串列表
     * @param list
     * @param sb
     * @param positionMap
     * @param keySet
     * @return
     */
    static String addQueryStr(List<String> list,StringBuilder sb, Map<Integer,Character> positionMap, Set<Character> keySet){
        int position = 0;
        char key = '.';
        for (Map.Entry<Integer, Character> integerCharacterEntry : positionMap.entrySet()) {
            position = integerCharacterEntry.getKey();
            key = integerCharacterEntry.getValue();
        }
        for (Character character : keySet) {
            if (character == key)
                continue;
            list.add(sb.replace(position, position + 1, String.valueOf(character)).toString());
        }
        return sb.substring(0, position);
    }
}

脚本宝典总结

以上是脚本宝典为你收集整理的获取格式化查询字符串全部内容,希望文章能够帮你解决获取格式化查询字符串所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。