java 如何判斷是否是26個英文字母
場景
需要判斷,首字母是否是英文字母。
有人說,那還不簡單么,StringUtils.isAlpha() 就可以搞定。 筆者也是這么想的,結果卻不是如此,代碼:
logger.info("字符:'{}' 是否是字母:{}","我",StringUtils.isAlpha("我")); // true logger.info("字符:'z' 是否是字母:{}","z",StringUtils.isAlpha("z")); // true
百度了下,發(fā)現(xiàn)isAlpha是只要在字母區(qū)間就算是字母,范圍要遠遠大于26個字母的范圍。
解決方案
正則進行判斷
用string.matches(reg) 判斷就可以,代碼:
String english="[a-zA-Z]"; logger.info("字符:'{}' 是否是字母:{}","我","我".matches(english)); // true logger.info("字符:'{}' 是否是字母:{}","z","z".matches(english)); // true
字符列表,然后遍歷
也可以寫個包含26個字符的數(shù)組,然后封裝為自己的判斷方法。 但是感覺不如matches方便,在此不詳述。
補充:java判斷字符串是否全部由數(shù)字,大小寫字母,特殊符號組成
直接上代碼,經(jīng)過驗證。
package javaTest; import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { /*** * * @param args * java判斷字符是否是全部由數(shù)字,小寫字母,大寫字母,特殊符號組成 * 正則表達式判斷 */ public static void main(String[] args) { // TODO Auto-generated method stub String 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("全是數(shù)字"); } else { System.out.println("不全是數(shù)字"); } if (matcher4.matches()) { System.out.println("全是特殊符號"); } else { System.out.println("不全是特殊符號"); } //判斷字符串是否全部由數(shù)字組成,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 + "全部是數(shù)字"); } } }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
Java并發(fā)編程深入理解之Synchronized的使用及底層原理詳解 下
在并發(fā)編程中存在線程安全問題,主要原因有:1.存在共享數(shù)據(jù) 2.多線程共同操作共享數(shù)據(jù)。關鍵字synchronized可以保證在同一時刻,只有一個線程可以執(zhí)行某個方法或某個代碼塊,同時synchronized可以保證一個線程的變化可見(可見性),即可以代替volatile2021-09-09Java中不得不知的Collection接口與Iterator迭代器
這篇文章主要介紹了Java中的Collection接口與Iterator迭代器,文中有詳細的代碼示例供大家參考,對我們的學習或工作有一定的幫助,需要的朋友可以參考下2023-06-06Jmeter自定義函數(shù)base64加密實現(xiàn)過程解析
這篇文章主要介紹了Jmeter自定義函數(shù)base64加密實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別)
這篇文章主要介紹了Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別) ,需要的朋友可以參考下2017-02-02Java使用agent實現(xiàn)main方法之前的實例詳解
這篇文章主要介紹了Java使用agent實現(xiàn)main方法之前的實例詳解的相關資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下2017-10-10