特殊字符操作工具类(特殊字符的开始下标、是否以特殊字符开头、是否含有特殊字符、集合中是否有特殊字符)
程序员文章站
2022-03-26 15:49:47
import java.util.ArrayList;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 特殊字符操作工具类 */public class SpecialUtil { private static final String DEFAULT_QUERY_REGEX = "[_!$^&*+=|{}';'\",<>/?~!#¥%……&*——|{}【】‘;:”“'.....
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 特殊字符操作工具类
*/
public class SpecialUtil {
private static final String DEFAULT_QUERY_REGEX = "[_!$^&*+=|{}';'\",<>/?~!#¥%……&*——|{}【】‘;:”“'。,、?]";
/**
* 获取查询过滤的非法字符
*
* @return
*/
protected static String getQueryRegex() {
return DEFAULT_QUERY_REGEX;
}
/**
* 判断集合中是否有特殊字符
* @param list
* @return true为包含,false为不包含
*/
public static boolean isSpecialList(ArrayList<String> list){
boolean flag=false;
flag=list.stream().filter(str->isSpecialChar(str)).findAny().isPresent();
return flag;
}
/**
* 判断是否含有特殊字符
* @param str
* @return true为包含,false为不包含
*/
public static boolean isSpecialChar(String str) {
String regEx = getQueryRegex()+"|\n|\r|\t";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.find();
}
/**
* 判断查询参数中是否以特殊字符开头
*
* @param value
* @return 特殊字符开头则返回true,否则返回false
*/
public static boolean specialSymbols(String value) {
if ((value).isEmpty()) {
return false;
}
Pattern pattern = Pattern.compile(getQueryRegex());
Matcher matcher = pattern.matcher(value);
char[] specialSymbols = getQueryRegex().toCharArray();
// 是否以特殊字符开头
boolean isStartWithSpecialSymbol = false;
for (int i = 0; i < specialSymbols.length; i++) {
char c = specialSymbols[i];
if (value.indexOf(c) == 0) {
isStartWithSpecialSymbol = true;
break;
}
}
return matcher.find() && isStartWithSpecialSymbol;
}
/**
* 判断字符串中特殊字符的首次开始下标
* @param targetstr
* @return 返回对应下标,从1开始
*/
public static int findSpecialIndex(String targetstr){
int start=-1;
Pattern pattern=Pattern.compile(getQueryRegex());
Matcher matcher=pattern.matcher(targetstr);
if (matcher.find()){
//匹配到结果在源字符串的起始索引
start=matcher.start();
}
return start;
}
public static void test(){
String str="abank_msg";
Pattern pattern=Pattern.compile(getQueryRegex());
Matcher matcher=pattern.matcher(str);
while(matcher.find()){
//匹配到结果在源字符串的起始索引
int start=matcher.start();
//匹配到结果在源字符串的结束索引
int end=matcher.end();
//匹配到结果字符串
String group=matcher.group();
System.out.println("start:"+start+",end:"+end+",group:"+group);
}
}
public static void main(String [] args){
String str="asdfsss#";
boolean specialChar = SpecialUtil.isSpecialChar(str);
boolean symbols = SpecialUtil.specialSymbols(str);
int specialIndex = SpecialUtil.findSpecialIndex(str);
System.out.println(specialChar);
System.out.println(symbols);
System.out.println(specialIndex);
}
}
点个赞吧
本文地址:https://blog.csdn.net/jackleeonlyone/article/details/110863711
上一篇: Python的uuid模块
下一篇: FIFO/LRU实现缓存算法