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 + '全部是數字');} } }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章:
