当前位置: 首页 > news >正文

java 非法字符过滤 , 半角/全角替换

java 非法字符过滤 , 半角/全角替换

 

package mjorcen.netty.test1;

import java.io.UnsupportedEncodingException;

public class CharByteConverter {

    /**
     * 全角转半角
     * 
     * @param str
     * @return
     * 
     * @author mjorcen
     * @email mjorcen@gmail.com
     * @dateTime Sep 27, 2014 2:51:50 PM
     * @version 1
     */
    @Deprecated
    public static final String toSingleByte(String str) {
        StringBuffer outStrBuf = new StringBuffer("");

        String Tstr = "";
        byte[] b = null;
        for (int i = 0; i < str.length(); i++) {
            Tstr = str.substring(i, i + 1);
            // 全角空格转换成半角空格
            if (Tstr.equals(" ")) {
                outStrBuf.append(" ");
                continue;
            }
            try {
                b = Tstr.getBytes("unicode");
                // 得到 unicode 字节数据
                if (b[2] == -1) {
                    // 表示全角
                    b[3] = (byte) (b[3] + 32);
                    b[2] = 0;
                    outStrBuf.append(new String(b, "unicode"));
                } else {
                    outStrBuf.append(Tstr);
                }
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        } // end for.
        return outStrBuf.toString();

    }

    /**
     * 半角转全角
     * 
     * @param str
     * @return
     * 
     * @author mjorcen
     * @email mjorcen@gmail.com
     * @dateTime Sep 27, 2014 2:52:06 PM
     * @version 1
     */
    @Deprecated
    public static final String toDoubleByte(String str) {
        StringBuffer outStrBuf = new StringBuffer("");
        String Tstr = "";
        byte[] b = null;
        for (int i = 0; i < str.length(); i++) {
            Tstr = str.substring(i, i + 1);
            if (Tstr.equals(" ")) {
                // 半角空格
                outStrBuf.append(Tstr);
                continue;
            }
            try {
                b = Tstr.getBytes("unicode");
                if (b[2] == 0) {
                    // 半角
                    b[3] = (byte) (b[3] - 32);
                    b[2] = -1;
                    outStrBuf.append(new String(b, "unicode"));
                } else {
                    outStrBuf.append(Tstr);
                }
                return outStrBuf.toString();
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        return outStrBuf.toString();
    }

    /**
     * 半角转全角
     * 
     * @param str
     * @return
     * 
     * @author mjorcen
     * @email mjorcen@gmail.com
     * @dateTime Sep 27, 2014 2:52:31 PM
     * @version 1
     */
    public static String ToSBC(String str) {
        char c[] = str.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == ' ') {
                c[i] = '\u3000';
            } else if (c[i] < '\177') {
                c[i] = (char) (c[i] + 65248);

            }
        }
        return new String(c);
    }

    /**
     * 全角转半角
     * 
     * @param str
     * @return
     * 
     * @author mjorcen
     * @email mjorcen@gmail.com
     * @dateTime Sep 27, 2014 2:52:50 PM
     * @version 1
     */
    public static String ToDBC(String str) {
        char c[] = str.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == '\u3000') {
                c[i] = ' ';
            } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
                c[i] = (char) (c[i] - 65248);

            }
        }
        String returnString = new String(c);
        return returnString;
    }

    public static void main(String[] args) {
        long l = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            String str = "814乡道阿斯蒂芬123/.12,412看2家1快2看了就2;看了2叫看来+看来家12考虑就23;了3接口2了2会2,.水电费苦辣时间的2  125123123121209-021~!@#$%^&*()_";
            String result = ToDBC(str);
            ToSBC(result);
        }
        System.out.println(System.currentTimeMillis() - l);
    }

}

 

相关文章:

  • char *p = abcdefg; p[0] = p[1]出错
  • CentOS项目实例之七--FTP配置
  • ssl https服务 需要 php5.3以上
  • Python-工具安装
  • SQL Server 主动防止阻塞的 1 方法
  • 烂泥:Windows下安装与配置Nginx web服务器
  • Asp.Net+Extjs实现登录
  • 文通移动文字识别采集终端(身份证识别,驾驶证识别,行驶证识别,护照识别,车牌识别)...
  • isFinite()
  • 线性判别分析LDA详解
  • Oracle RAC的日志体系
  • C# Distinct方法的使用笔记
  • Linux远程桌面
  • Java Se : Java NIO(服务端)与BIO(客户端)通信
  • 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究...
  • 时间复杂度分析经典问题——最大子序列和
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CentOS7简单部署NFS
  • JS实现简单的MVC模式开发小游戏
  • JS题目及答案整理
  • leetcode98. Validate Binary Search Tree
  • python docx文档转html页面
  • Python 反序列化安全问题(二)
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Vue小说阅读器(仿追书神器)
  • 前端相关框架总和
  • 手写双向链表LinkedList的几个常用功能
  • 我这样减少了26.5M Java内存!
  • 智能网联汽车信息安全
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​批处理文件中的errorlevel用法
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #FPGA(基础知识)
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (C++17) std算法之执行策略 execution
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (一)Neo4j下载安装以及初次使用
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .gitignore文件—git忽略文件
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 表达式计算:Expression Evaluator
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net的DataSet直接与SQL2005交互
  • .NET基础篇——反射的奥妙
  • @Documented注解的作用
  • @EventListener注解使用说明
  • @ResponseBody
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [20140403]查询是否产生日志
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians