java中判断字符是否为英文字母、中文汉字或者数字
在java程序中经常需要实现这样几个功能:
- 判断一个字符的类型到底是数字、字母还是中文汉字
- 取出一串字符串中的字母或者数字
实现这几个功能的方法有很多种,这里记录一下通过比较unicode编码的范围的方式实现
各种字符的unicode编码的范围:
汉字:[0x4e00,0x9fa5] 或 十进制[19968,40869]
数字:[0x30,0x39] 或 十进制[48, 57]
小写字母:[0x61,0x7a] 或 十进制[97, 122]
大写字母:[0x41,0x5a] 或 十进制[65, 90]
下面写个例子:取出一串字符串中的英文字母,不区分大小写
public class test { public static void main(String[] args) { String s = "都是A5a12B1b"; char c[] = s.toCharArray(); byte b[] = new byte[c.length]; for (int i = 0; i < c.length; i++) { b[i] = (byte) c[i]; // 对每一个字符进行判断 if ((b[i] >= 97 && b[i] <= 122) || (b[i] >= 65 && b[i] <= 90)) { System.out.println(s.substring(i, i + 1) + ":" + b[i]); } } } }
使用正则取出字符串中的汉字
public class test { public static void main(String[] args) { int count = 0; String s = "都是A5a12B1b"; String regex = "[\u4e00-\u9fa5]"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(s); while (count < s.length()) { if (m.find()) { System.out.println(m.group().toString()); } count++; } } }