Java正则表达式过滤特殊字符、空格和苹果中文输入法输入英文字母之间出现六分之一空格的问题

Java正则表达式过滤特殊字符、空格和苹果中文输入法输入英文字母之间出现六分之一空格的问题

最近小C的项目将要上线,测试给我测试出了一个,苹果输入法中文输入法输入英文导致显示空白格,保存到数据库乱码成问号的问题,小C是较劲脑汁,先过滤特殊字符,不行;过滤空格,不行;处理编码问题,不行;我就有点想放弃的念头了,该想的都想了是哪的问题了,经过无限的Google终于找到了原因,就分享给大家解决办法,这个问题是苹果中文输入法输入英文产生了一个六分之一的空格(非一般空格)。处理方法加正则表达式的\u2006过滤掉。具体看代码:

  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. import java.util.regex.PatternSyntaxException;
  4. public class Patterns {
  5.     // 过滤特殊字符
  6.     public static String StringFilter(String str) throws PatternSyntaxException {
  7.         // 只允许字母和数字 // String regEx = "[^a-zA-Z0-9]";
  8.         // 清除掉所有特殊字符
  9.         //String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
  10.         //String regEx = "\\s*|\t|\r|\n";//去空格回车
  11.         //匹配单个空白字符,包括空格,制表符,换页,换行等Unicode的空格
  12.         //如果只过滤苹果中文输入法输入英文字母之间出现六分之一空格的问题只需要\u2006就可以了。亲测有效
  13.         String regEx = "[\f\n\r\t\\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]";
  14.         Pattern p = Pattern.compile(regEx);
  15.         Matcher m = p.matcher(str);
  16.         return m.replaceAll("").trim();
  17.     }
  18. }

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

    A+
发布日期:2016年05月19日  所属分类:Java
标签:

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

目前评论:11   其中:访客  9   博主  2

  1. avatar 成都卫校 3

    学到了

  2. avatar 无聊赚 1

    我倒是挺想学正则的 网上咋没有相对完整的视频呢

  3. avatar 嘻嘻不要 2

    正则还真掌握了几个常用的,批量修改些东西轻松多了

  4. avatar 破浪无忧Blog 4

    我这和IOS对接没出现你说的问题啊~

  5. avatar 夏天烤洋芋 4

    不懂java.

  6. avatar 长沙花卉租摆 4

    NB哄哄的

  7. avatar 章晓雷博客 4

    来看看 支持一下 小C

  8. avatar Koolight 5

    牛C又练功了,这些我又是完全看不懂的。

  9. avatar 米粒博客 4

    折腾中进步!加油!

评论加载中...