packagecom.test;importjava.util.regex.Matcher;importjava.util.regex.Pattern;public classTest {
@org.junit.Testpublic voidtest(){
String fileName= "test,中文";
System.out.println(filterChinese(fileName));
}/*** 判断字符串中是否包含中文
*@paramstr
* 待校验字符串
*@return是否为中文
* @warn 不能校验是否为中文标点符号*/
public static booleanisContainChinese(String str) {
Pattern p= Pattern.compile("[\u4e00-\u9fa5]");
Matcher m=p.matcher(str);if(m.find()) {return true;
}return false;
}/*** 过滤掉中文
*@paramstr 待过滤中文的字符串
*@return过滤掉中文后字符串*/
public staticString filterChinese(String str) {//用于返回结果
String result =str;boolean flag =isContainChinese(str);if (flag) {//包含中文//用于拼接过滤中文后的字符
StringBuffer sb = newStringBuffer();//用于校验是否为中文
boolean flag2 = false;//用于临时存储单字符
char chinese = 0;//5.去除掉文件名中的中文//将字符串转换成char[]
char[] charArray =str.toCharArray();//过滤到中文及中文字符
for (int i = 0; i < charArray.length; i++) {
chinese=charArray[i];
flag2=isChinese(chinese);if (!flag2) {//不是中日韩文字及标点符号
sb.append(chinese);
}
}
result=sb.toString();
}returnresult;
}/*** 校验一个字符是否是汉字
*
*@paramc
* 被校验的字符
*@returntrue代表是汉字*/
public static boolean isChineseChar(charc) {try{return String.valueOf(c).getBytes("UTF-8").length > 1;
}catch(Exception e) {
e.printStackTrace();return false;
}
}/*** 验证字符串内容是否包含下列非法字符
* `~!#%^&*=+\\|{};:'\",<>/?○●★☆☉♀♂※¤╬の〆
*
*@paramcontent
* 字符串内容
*@return't'代表不包含非法字符,otherwise代表包含非法字符。*/
public static charvalidateLegalString(String content) {
String illegal= "`~!#%^&*=+\\|{};:'\",<>/?○●★☆☉♀♂※¤╬の〆";char isLegalChar = 't';
L1:for (int i = 0; i < content.length(); i++) {for (int j = 0; j < illegal.length(); j++) {if (content.charAt(i) ==illegal.charAt(j)) {
isLegalChar=content.charAt(i);breakL1;
}
}
}returnisLegalChar;
}/*** 验证是否是汉字或者0-9、a-z、A-Z
*
*@paramc
* 被验证的char
*@returntrue代表符合条件*/
public static boolean isRightChar(charc) {return isChinese(c) ||isWord(c);
}/*** 校验某个字符是否是a-z、A-Z、_、0-9
*
*@paramc
* 被校验的字符
*@returntrue代表符合条件*/
public static boolean isWord(charc) {
String regEx= "[\\w]";
Pattern p=Pattern.compile(regEx);
Matcher m= p.matcher("" +c);returnm.matches();
}/*** 判定输入的是否是汉字
*
*@paramc
* 被校验的字符
*@returntrue代表是汉字*/
public static boolean isChinese(charc) {
Character.UnicodeBlock ub=Character.UnicodeBlock.of(c);if (ub ==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS|| ub ==Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS|| ub ==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A|| ub ==Character.UnicodeBlock.GENERAL_PUNCTUATION|| ub ==Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION|| ub ==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {return true;
}return false;
}/*** 校验String是否全是中文
*
*@paramname
* 被校验的字符串
*@returntrue代表全是汉字*/
public static booleancheckNameChese(String name) {boolean res = true;char[] cTemp =name.toCharArray();for (int i = 0; i < name.length(); i++) {if (!isChinese(cTemp[i])) {
res= false;break;
}
}returnres;
}
}