java 如何判断是否是26个英文字母
需要判断,首字母是否是英文字母。
有人说,那还不简单么,StringUtils.isAlpha() 就可以搞定。 笔者也是这么想的,结果却不是如此,代码:
logger.info('字符:’{}’ 是否是字母:{}','我',StringUtils.isAlpha('我')); // truelogger.info('字符:’z’ 是否是字母:{}','z',StringUtils.isAlpha('z')); // true
百度了下,发现isAlpha是只要在字母区间就算是字母,范围要远远大于26个字母的范围。
解决方案正则进行判断用string.matches(reg) 判断就可以,代码:
String english='[a-zA-Z]'; logger.info('字符:’{}’ 是否是字母:{}','我','我'.matches(english)); // truelogger.info('字符:’{}’ 是否是字母:{}','z','z'.matches(english)); // true字符列表,然后遍历
也可以写个包含26个字符的数组,然后封装为自己的判断方法。 但是感觉不如matches方便,在此不详述。
补充:java判断字符串是否全部由数字,大小写字母,特殊符号组成
直接上代码,经过验证。
package javaTest; import java.util.regex.Matcher;import java.util.regex.Pattern; public class test { /*** * * @param args * java判断字符是否是全部由数字,小写字母,大写字母,特殊符号组成 * 正则表达式判断 */public static void main(String[] args) {// TODO Auto-generated method stubString str = 'aksjfjJAJIFJSL12455432^&^&(';String str1 = 'abcdfjijgiaj';String str2 = 'JAOGVNDIJEIO';String str3 = '12345465870';String str4 = '@#$^^%^&*(';Pattern pattern1 = Pattern.compile('[a-z]*');Pattern pattern2 = Pattern.compile('[A-Z]*');Pattern pattern3 = Pattern.compile('[0-9]*');Pattern pattern4 = Pattern.compile('p{Punct}+');Matcher matcher1 = pattern1.matcher(str1);Matcher matcher2 = pattern2.matcher(str2);Matcher matcher3 = pattern3.matcher(str3);Matcher matcher4 = 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自带方法判断boolean flag = true;for (int i = str3.length()-1; i >= 0; i--) {if (!Character.isDigit(str3.charAt(i))) {flag = false;}}if (flag) {System.out.println(str3 + '全部是数字');} } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持好吧啦网。如有错误或未考虑完全的地方,望不吝赐教。
相关文章: