java 如何判斷是否是26個英文字母

場景

需要判斷,首字母是否是英文字母。

有人說,那還不簡單麼,StringUtils.isAlpha() 就可以搞定。 筆者也是這麼想的,結果卻不是如此,代碼:

logger.info("字符:'{}' 是否是字母:{}","我",StringUtils.isAlpha("我")); // true
logger.info("字符:'z' 是否是字母:{}","z",StringUtils.isAlpha("z")); // true

百度瞭下,發現isAlpha是隻要在字母區間就算是字母,范圍要遠遠大於26個字母的范圍。

解決方案

正則進行判斷

用string.matches(reg) 判斷就可以,代碼:

String english="[a-zA-Z]"; 
logger.info("字符:'{}' 是否是字母:{}","我","我".matches(english)); // true
logger.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 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("全是數字");
		}
		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 + "全部是數字");
		} 
	} 
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: