java 中文及特殊字符校验

CreateTime--2017年8月25日16:54:50

Author:Marydon

一、参考链接

  http://blog.csdn.net/imduan/article/details/54907998

二、具体实现

  1.关于Character.UnicodeBlock的介绍

  CJK的意思是“Chinese,Japanese,Korea”的简写 ,实际上就是指中日韩三国的象形文字的Unicode编码

  Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS : 4E00-9FBF:Unicode 编码为 U+4E00~U+9FFF 的 CJK 统一文字 
  Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS :F900-FAFF:CJK 兼容象形文字

  Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A :3400-4DBF:CJK 统一表意符号扩展 A 
  Character.UnicodeBlock.GENERAL_PUNCTUATION :2000-206F:常用标点

  Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION :3000-303F:CJK 符号和标点                      

  Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS :FF00-FFEF:半角及全角形式

  2.封装

/**
* 校验一个字符是否是汉字
*
* @param c
* 被校验的字符
* @return true代表是汉字
*/
public static boolean isChineseChar(char c) {
try {
return String.valueOf(c).getBytes("UTF-8").length > 1;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return false;
}
} /**
* 验证字符串内容是否包含下列非法字符<br>
* `~!#%^&*=+\\|{};:'\",<>/?○●★☆☉♀♂※¤╬の〆
*
* @param content
* 字符串内容
* @return 't'代表不包含非法字符,otherwise代表包含非法字符。
*/
public static char validateLegalString(String content) {
String illegal = "`~!#%^&*=+\\|{};:'\",<>/?○●★☆☉♀♂※¤╬の〆";
char isLegalChar = 't';
L1: for (int i = 0; i < content.length(); i++) {
for (int j = 0; j < illegal.length(); j++) {
if (content.charAt(i) == illegal.charAt(j)) {
isLegalChar = content.charAt(i);
break L1;
}
}
}
return isLegalChar;
} /**
* 验证是否是汉字或者0-9、a-z、A-Z
*
* @param c
* 被验证的char
* @return true代表符合条件
*/
public static boolean isRightChar(char c) {
return isChinese(c) || isWord(c);
} /**
* 校验某个字符是否是a-z、A-Z、_、0-9
*
* @param c
* 被校验的字符
* @return true代表符合条件
*/
public static boolean isWord(char c) {
String regEx = "[\\w]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher("" + c);
return m.matches();
} /**
* 判定输入的是否是汉字
*
* @param c
* 被校验的字符
* @return true代表是汉字
*/
public static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
return true;
}
return false;
} /**
* 校验String是否全是中文
*
* @param name
* 被校验的字符串
* @return true代表全是汉字
*/
public static boolean checkNameChese(String name) {
boolean res = true;
char[] cTemp = name.toCharArray();
for (int i = 0; i < name.length(); i++) {
if (!isChinese(cTemp[i])) {
res = false;
break;
}
}
return res;
}

  

 

最新文章

  1. B-Tree 学习
  2. 编译本地64位版本的hadoop-2.6.0
  3. Oracle 10g Block Change Tracking特性
  4. 用PHP链接mysql数据库
  5. Ehcache(04)——设置缓存的大小
  6. SQLServer 触发器 同时插入多条记录有关问题
  7. 合并两个rs结果输出
  8. word和.txt文件转html 及pdf文件, 使用poi jsoup itext心得
  9. Redis(二)--Jedis使用
  10. POJ - 1321 棋盘问题 简单搜索 dfs 格子
  11. NOI 7614 最低通行费(多段图最短路)
  12. Android之自定义控件
  13. Python OOP面向对象
  14. 【NAS】CIFS用户场景需求分析
  15. 前端javascript实现二进制读写操作
  16. 7-16 Bestcoder a Oracle
  17. stream.fail() eof() EOF
  18. this.$apply()
  19. 释放Linux系统缓存
  20. HUST 1010 The Minimum Length

热门文章

  1. Gallery和自定义Adapter配合使用,实现图片预览
  2. SRE学习笔记:分布式共识系统、Paxos协议
  3. javascript中使用new与不使用实例化对象的区别
  4. iOS:仿写探探App动画
  5. codeforce 192 div2解题报告
  6. QT国际化(中英转换)
  7. Ubuntu sh命令无法正确执行 (修改默认sh为bash)
  8. Twitter雪花算法 SnowFlake算法 的java实现
  9. MFC剪贴板通信
  10. DOM元素尺寸offsetWidth,scrollWidth,clientWidth等具体解释