java过滤汉字和英文,java判断及过滤汉字

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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值