java 如何判断是否是26个英文字母
场景
需要判断,首字母是否是英文字母。
有人说,那还不简单么,StringUtils.isAlpha()就可以搞定。笔者也是这么想的,结果却不是如此,代码:
logger.info("字符:'{}'是否是字母:{}","我",StringUtils.isAlpha("我"));//true
logger.info("字符:'z'是否是字母:{}","z",StringUtils.isAlpha("z"));//true
百度了下,发现isAlpha是只要在字母区间就算是字母,范围要远远大于26个字母的范围。
解决方案
正则进行判断
用string.matches(reg)判断就可以,代码:
Stringenglish="[a-zA-Z]";
logger.info("字符:'{}'是否是字母:{}","我","我".matches(english));//true
logger.info("字符:'{}'是否是字母:{}","z","z".matches(english));//true
字符列表,然后遍历
也可以写个包含26个字符的数组,然后封装为自己的判断方法。但是感觉不如matches方便,在此不详述。
补充:java判断字符串是否全部由数字,大小写字母,特殊符号组成
直接上代码,经过验证。
packagejavaTest;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclasstest{
/***
*
*@paramargs
*java判断字符是否是全部由数字,小写字母,大写字母,特殊符号组成
*正则表达式判断
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Stringstr="aksjfjJAJIFJSL12455432^&^&(";
Stringstr1="abcdfjijgiaj";
Stringstr2="JAOGVNDIJEIO";
Stringstr3="12345465870";
Stringstr4="@#$^^%^&*(";
Patternpattern1=Pattern.compile("[a-z]*");
Patternpattern2=Pattern.compile("[A-Z]*");
Patternpattern3=Pattern.compile("[0-9]*");
Patternpattern4=Pattern.compile("\\p{Punct}+");
Matchermatcher1=pattern1.matcher(str1);
Matchermatcher2=pattern2.matcher(str2);
Matchermatcher3=pattern3.matcher(str3);
Matchermatcher4=pattern4.matcher(str4);
if(matcher1.matches()){
System.out.println("全是小写字母");
}
else{
System.out.println("不全是小写字母");
}
if(matcher2.matches()){
System.out.println("全是大写字母");
}
else{
System.out.println("不全是大写字母");
}
if(matcher3.matches()){
System.out.println("全是数字");
}
else{
System.out.println("不全是数字");
}
if(matcher4.matches()){
System.out.println("全是特殊符号");
}
else{
System.out.println("不全是特殊符号");
}
//判断字符串是否全部由数字组成,java自带方法判断
booleanflag=true;
for(inti=str3.length()-1;i>=0;i--){
if(!Character.isDigit(str3.charAt(i))){
flag=false;
}
}
if(flag){
System.out.println(str3+"全部是数字");
}
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。