——Friend or Foe
网上判断输入是否是汉字,数字,字母,有很多方法,但经过实践许多方法效率很低,经常判断失败,所以在此不列举,下面这几种方法是经我实践验证效果最好的。
一:判断输入是否是汉字:
/**
* 判定输入汉字
* @param c
* @return
*/
public boolean isChinese(char c){
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){
returntrue;
}
returnfalse;
}
/**
* 检测String是否全是中文
* @param name
* @return
*/
public boolean checkNameChese(String name)
{
boolean isChinese=true;
char[] cTemp = name.toCharArray();
for(int i=0;i<name.length();i++)
{
if(!isChinese(cTemp[i]))
{
isChinese=false;
break;
}
}
return isChinese;
}
二:判断输入是否是英文:
//判断表示是否全为英文
private boolean isEnglish(String str) {
for (int i = 0; i < str.length(); i++) {
if (!(str.charAt(i) >= 'A' && str.charAt(i) <= 'Z')
&& !(str.charAt(i) >= 'a' && str.charAt(i) <= 'z')) {
return false;
}
}
return true;
}
三:判断输入是否是数字:
String txt = edInput.getText().toString();
Pattern p = Pattern.compile("[0-9]*");
Matcher m = p.matcher(txt);
if(m.matches() ){
Toast.makeText(Main.this,"输入的是数字", Toast.LENGTH_SHORT).show();
}