1. package com.test;
  2.  
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5.  
  6. public class Test {
  7. @org.junit.Test
  8. public void test(){
  9. String fileName = "test,中文";
  10. System.out.println(filterChinese(fileName));
  11. }
  12.  
  13. /**
  14. * 判断字符串中是否包含中文
  15. * @param str
  16. * 待校验字符串
  17. * @return 是否为中文
  18. * @warn 不能校验是否为中文标点符号
  19. */
  20. public static boolean isContainChinese(String str) {
  21. Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
  22. Matcher m = p.matcher(str);
  23. if (m.find()) {
  24. return true;
  25. }
  26. return false;
  27. }
  28.  
  29. /**
  30. * 过滤掉中文
  31. * @param str 待过滤中文的字符串
  32. * @return 过滤掉中文后字符串
  33. */
  34. public static String filterChinese(String str) {
  35. // 用于返回结果
  36. String result = str;
  37. boolean flag = isContainChinese(str);
  38. if (flag) {// 包含中文
  39. // 用于拼接过滤中文后的字符
  40. StringBuffer sb = new StringBuffer();
  41. // 用于校验是否为中文
  42. boolean flag2 = false;
  43. // 用于临时存储单字符
  44. char chinese = 0;
  45. // 5.去除掉文件名中的中文
  46. // 将字符串转换成char[]
  47. char[] charArray = str.toCharArray();
  48. // 过滤到中文及中文字符
  49. for (int i = 0; i < charArray.length; i++) {
  50. chinese = charArray[i];
  51. flag2 = isChinese(chinese);
  52. if (!flag2) {// 不是中日韩文字及标点符号
  53. sb.append(chinese);
  54. }
  55. }
  56. result = sb.toString();
  57. }
  58. return result;
  59. }
  60.  
  61. /**
  62. * 校验一个字符是否是汉字
  63. *
  64. * @param c
  65. * 被校验的字符
  66. * @return true代表是汉字
  67. */
  68. public static boolean isChineseChar(char c) {
  69. try {
  70. return String.valueOf(c).getBytes("UTF-8").length > 1;
  71. } catch (Exception e) {
  72. e.printStackTrace();
  73. return false;
  74. }
  75. }
  76.  
  77. /**
  78. * 验证字符串内容是否包含下列非法字符<br>
  79. * `~!#%^&*=+\\|{};:'\",<>/?○●★☆☉♀♂※¤╬の〆
  80. *
  81. * @param content
  82. * 字符串内容
  83. * @return 't'代表不包含非法字符,otherwise代表包含非法字符。
  84. */
  85. public static char validateLegalString(String content) {
  86. String illegal = "`~!#%^&*=+\\|{};:'\",<>/?○●★☆☉♀♂※¤╬の〆";
  87. char isLegalChar = 't';
  88. L1: for (int i = 0; i < content.length(); i++) {
  89. for (int j = 0; j < illegal.length(); j++) {
  90. if (content.charAt(i) == illegal.charAt(j)) {
  91. isLegalChar = content.charAt(i);
  92. break L1;
  93. }
  94. }
  95. }
  96. return isLegalChar;
  97. }
  98.  
  99. /**
  100. * 验证是否是汉字或者0-9、a-z、A-Z
  101. *
  102. * @param c
  103. * 被验证的char
  104. * @return true代表符合条件
  105. */
  106. public static boolean isRightChar(char c) {
  107. return isChinese(c) || isWord(c);
  108. }
  109.  
  110. /**
  111. * 校验某个字符是否是a-z、A-Z、_、0-9
  112. *
  113. * @param c
  114. * 被校验的字符
  115. * @return true代表符合条件
  116. */
  117. public static boolean isWord(char c) {
  118. String regEx = "[\\w]";
  119. Pattern p = Pattern.compile(regEx);
  120. Matcher m = p.matcher("" + c);
  121. return m.matches();
  122. }
  123.  
  124. /**
  125. * 判定输入的是否是汉字
  126. *
  127. * @param c
  128. * 被校验的字符
  129. * @return true代表是汉字
  130. */
  131. public static boolean isChinese(char c) {
  132. Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
  133. if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
  134. || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
  135. || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
  136. || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
  137. || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
  138. || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
  139. return true;
  140. }
  141. return false;
  142. }
  143.  
  144. /**
  145. * 校验String是否全是中文
  146. *
  147. * @param name
  148. * 被校验的字符串
  149. * @return true代表全是汉字
  150. */
  151. public static boolean checkNameChese(String name) {
  152. boolean res = true;
  153. char[] cTemp = name.toCharArray();
  154. for (int i = 0; i < name.length(); i++) {
  155. if (!isChinese(cTemp[i])) {
  156. res = false;
  157. break;
  158. }
  159. }
  160. return res;
  161. }
  162. }

java判断字符串中是否包含中文 过滤中文的更多相关文章

  1. java 判断字符串中是否包含中文并过滤掉中文

      java判断字符串中是否包含中文并过滤掉中文 CreateTime--2017年9月6日08:48:59 Author:Marydon 1.判断字符串中是否包含中文方法封装 /** * 判断字符串 ...

  2. js判断字符串中是否包含特殊字符、中文

    /** * @author:xc * @desc: 特殊字符校验 除了下划线 */ containSpecial(str) { var containSpecial = RegExp( /[(\ )( ...

  3. [C#]判断字符串中是否包含中文

    关键代码: /// <summary> /// 判断字符串中是否包含中文 /// </summary> /// <param name="str"&g ...

  4. PHP判断字符串中是否包含指定字符串,支持中文哦

    RT,随手写的 /** * 判断字符串中是否包含指定字符串 * @var source 源字符串 * @var target 要判断的是否包含的字符串 * @return bool */ functi ...

  5. php字符串查找函数 php查找字符串中出现的次数函数substr_count,判断字符串中是否包含另一个字符串函数strpos

    php字符串查找函数 php查找字符串中出现的次数函数substr_count,判断字符串中是否包含另一个字符串函数strpossubstr_count($haystack, $needle [,$o ...

  6. 判断字符串中是否包含Emoji表情代码

    判断字符串中是否包含Emoji表情代码: + (BOOL)stringContainsEmoji:(NSString *)string { __block BOOL returnValue = NO; ...

  7. python判断字符串中是否包含子字符串

    python判断字符串中是否包含子字符串 s = '1234问沃尔沃434' if s.find('沃尔沃') != -1:     print('存在') else:     print('不存在' ...

  8. Node.js之判断字符串中是否包含某个字符串

    server.txt内容如下: 阿里云服务器 关于应用场景,就不多说了,字符串是不论是后端开发还是前端开发等,都是要经常打交道了. test.js(node.js代码,只要被本地装了node.js环境 ...

  9. java判断字符串中是否含有中文

    /** * 判断字符串中是否含有中文 */ public static boolean isCNChar(String s){ boolean booleanValue = false; for(in ...

随机推荐

  1. windows环境下把Python代码打包成独立执行的exe

    windows环境下把Python代码打包成独立执行的exe可执行文件   有时候因为出差,突然急需处理一批数据.虽然写好的脚本存储在云端随用随取,然而编译的环境还需要重新搭建,模块也需要重新装载,从 ...

  2. html-display标签

    标签可以分为行内标签和行间块级标签, 块级标签:占一行,如果父标签没有限高度,子标签会自动扩展父标签的高度,行内标签不能, 可以设置宽度 高度 padding margin 行内标签:    不能设置 ...

  3. 前端js 省市联动

    代码下载地址 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  4. VC禁止或允许拖拽改变窗口尺寸

    创建窗口时用WS_THICKFRAME控制 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CMDIFrameWndEx:: ...

  5. PHP echo()、print()、print_r()、var_dump()、var_export()的区别

    PHP中echo.print.print_r.var_dump.var_export的用法与区别 这些均为输出变量的内容: echo();不是函数.是PHP语句.没有返回值:输出一个或者多个字符串或者 ...

  6. 【linux】之查看物理CPU个数、核数、逻辑CPU个数

    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| ...

  7. 【springBoot】之配置文件application

    springboot使用一个全局的配置文件application.properties或者是application.yml,放在在src/main/recesources下或者在类路径下的/confi ...

  8. Maven 专题

    目录: Maven的安装 Eclipse安装Maven插件 Nexus私服搭建 Maven+Nexus配置 发布自己的构件(至Nexus) 创建maven多模块工程group 整理中[...] 先放一 ...

  9. 【Mysql】事务日志-Write Ahead logging vs command-logging(转)

    原理讲解: Write Ahead logging vs command logging Write Ahead logging 持久化数据保存在磁盘,数据的存储是随机的,并非顺序: 内存中保存磁盘数 ...

  10. R read.table 一个问题的解决

    Warning message: In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : EOF within q ...