1 特殊字符转义—SQL模糊查询字段
package com.orange.utils;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 字符串工具类 用于模糊查询
*/
public class StrUtil extends StringUtils {
private static final Map<String,String> keyMap;
/**
* key --原字符
* value -- 替换后字符
*/
static {
keyMap = new HashMap<>();
keyMap.put("%","/%");
keyMap.put("_","/_");
keyMap.put("&","/&");
keyMap.put("'","/'");
keyMap.put(">","/%");
keyMap.put("<","/%");
keyMap.put("and","/");
keyMap.put("or","/");
}
/**
* 特俗字符转义--SQL模糊查询字段
* @param keyWord
* @return
*/
public static String escapeExprSpecialWord(String keyWord){
if(StringUtils.isBlank(keyWord)){
return "";
}
/**
* 特殊字符转义--SQL模糊查询字段
*/
List<String> list = Arrays.asList(keyWord.split("")).stream()
.map(mo -> {
for (Map.Entry<String, String> fo : keyMap.entrySet()) {
String key = fo.getKey();
String value = fo.getValue();
if (key.equals(mo)) {
mo = mo.replace(key, value);
}
}
return mo;
}).collect(Collectors.toList());
StringBuffer result = new StringBuffer();
list.forEach(s -> result.append(s));
return result.toString();
}
}