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+"全部是数字"); } } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。