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;
}