欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 如何判断是否是26个英文字母

程序员文章站 2022-06-25 14:19:49
场景需要判断,首字母是否是英文字母。有人说,那还不简单么,stringutils.isalpha() 就可以搞定。 笔者也是这么想的,结果却不是如此,代码:logger.info("字符:'{}' 是...

场景

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

有人说,那还不简单么,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 + "全部是数字");
		} 
	} 
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。