天天看点

String 字符串截取,获得指定字符数量,截取String两个内容之前内容并去重

String 字符串截取,获得指定字符数量,截取String两个内容之前内容并去重

将内容替换为指定内容

我的需替换字符是以“?“包裹 例:”?username?“ 替换为 ”张三“

拥有多个”?xxx?“要替换

public String smsSplicing(String content, Map<String,String> map,String replace){
        int n = 0;			//记录 ?数量
        String content1 = content;		//定义变量接收内容
        HashSet list = new HashSet();	//使用hashSet去重
        while(content1.indexOf(replace)!=-1) {
            int i = content1.indexOf('?');	//获取第一个?下标
            n++;
            content1 = content1.substring(i+1);   //获取第一个?往后的所以字符串
            if(n%2!=0) {
                list.add(content1.substring(0, content1.indexOf("?"))); //获取下一个?下标进行截取获得?包裹字符
            }
        }
        if(map.size()!=list.size()){  //判断传入参数是否与内容需替换参数相等
            return "xx";
        }
        Set<Map.Entry<String, String>> entry =  map.entrySet(); 
        for (Map.Entry<String, String> m : entry) {
            if (m.getValue()==""||m.getValue().isEmpty()){
                return "5";
            }
            String key = m.getKey();
            String value = m.getValue();
            log.info(key+"---"+value);
            String replaces = replace+key+replace;
            if (content.contains(replaces)==true){
                content = content.replace(replaces,value);
                log.info(content);
            }else {
                return "4";
            }
        }
        log.info("拼接后的内容:"+content);
        return content;
    }