一、替换字符串中的多个字符。
- 前言:Java中替换字符串可以用replace和replaceAll这两种。
区别是:
replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了就是字符串的意思)。
replaceAll的参数是regex或者char,即基于正则表达式的替换,例如,可以通过replaceAll(“\d”, “*”)将一个字符串所有的数字字符都换成星号,相同点是都是全部替换,即将源字符串中的某一字符或字符串全部换成指定的字符或字符串。
如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于正则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串。
另外,如果replaceAll()和replaceFirst()所用的参数据不是基于正则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作。**
1、将前端传过来的对象 {"A":"招标人","B":"投标人","C":"设计单位","D":"施工单位"}
转换为招标人#投标人#设计单位#施工单位
格式字符串存储到数据库中,对应的字段为 optionAll
。
/**
*
* @param optionAll
* @return 字符替换公方法
*/
public char[] characterSubstitutionMethood(String optionAll){
//{"A":"招标人","B":"投标人","C":"设计单位","D":"施工单位"} 替换 招标人#投标人#设计单位#施工单位
String strOptionAll = (optionAll.replaceAll("\"","").substring(0,(optionAll.replaceAll("\"","")).length()-1)).substring(1);
//字符替换,替换字符串中的引号
String A = optionAll.replaceAll("\"","");
System.out.println(A); //{A:招标人,B:投标人,C:设计单位,D:施工单位}
//截取字符串中从下标[0,A.length()-1)字符
String B = A.substring(0,(optionAll.replaceAll("\"","")).length()-1);
System.out.println(B); //{A:招标人,B:投标人,C:设计单位,D:施工单位
//截取字符串中下标为1后面的所有字符
String C = B.substring(1);
System.out.println(C); //A:招标人,B:投标人,C:设计单位,D:施工单位
//替换字符中含有A,B,C,D....字符 将"A:招标人,B:投标人,C:设计单位,D:施工单位" 替换为 "招标人,投标人,设计单位,施工单位"
String strOptionAllT = strOptionAll.replaceAll("(?i)A:","")
.replaceAll("(?i)B:","") //加(?i)是为了不区别大小写
.replaceAll("(?i)C:","")
.replaceAll("(?i)D:","")
.replaceAll("(?i)E:","")
.replaceAll("(?i)F:","")
.replaceAll("(?i)G:","")
.replaceAll("(?i)H:","")
.replaceAll("(?i)I:","")
.replaceAll("(?i)J:","")
.replaceAll("(?i)K:","")
.replaceAll("(?i)L:","")
.replaceAll("(?i)M:","")
.replaceAll("(?i)N:","");
//开辟一个数组存储替换之后的字符
char[] charOptionAll = new char[strOptionAllT.length()];
for (int i = 0; i < strOptionAllT.length(); i++) {
if ((strOptionAllT.charAt(i)+"").equals(",")){ //将字符中所有英文“,”替换为#号。
charOptionAll[i] ='#';
}else {
charOptionAll[i] = strOptionAllT.charAt(i);
}
}
return charOptionAll; //招标人#投标人#设计单位#施工单位
}
//在业务中调用上述方法。
@AutoLog(value = "t_society_problems-添加")
@ApiOperation(value="t_society_problems-添加", notes="t_society_problems-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody TSocietyProblems tSocietyProblems) {
String optionAll = tSocietyProblems.getOptionAll(); //optionAll
if (StringUtils.isNotBlank(optionAll)){
//数组转为字符串
tSocietyProblems.setOptionAll(new String(new CharacterSubstitution().characterSubstitutionMethood(optionAll)));
tSocietyProblemsService.save(tSocietyProblems);
return Result.OK("SUCCESS");
}
tSocietyProblemsService.save(tSocietyProblems);
return Result.OK("SUCCESS");
}