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

java全角半角间的转换

方案一:

 

   /**

     * 全角转半角 符号,数字,字母 高位为-1,低位全角比半角少32H。 将字母a-z,A-Z,0-9之外的符号转换成为半        *角。
     * 
     * @param SBCString
     * @return 半角 String
     * @author Gyb
     */
    public static String SBC2DBC(String SBCString) {
if(SBCString == null){
   return null;
}
StringBuffer DBCString = new StringBuffer ("");
try {
   byte[] bytes = null;
   for (int i = 0; i < SBCString.length (); i++) {
String temp = SBCString.substring (i , i + 1);
boolean isContainLetters = Pattern.matches ("[0-9a-zA-Z]" , temp);
if (!isContainLetters) {
   bytes = temp.getBytes ("unicode");
   if (bytes[3] == -1) {
bytes[2] = (byte) (bytes[2] + 32);
bytes[3] = 0;
   }
   DBCString.append (new String (bytes , "unicode"));
}else{
   DBCString.append (temp);
}
   }
} catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace ();
}
return DBCString.toString ();
    }

    /**
     * 半角转全角 半角的 符号,数字,字母 高位为0,低位半角比全角多32H。 将字母a-z,A-Z,0-9之外的符号转换成      *为全角,数据库存贮。
     * @param DBCString
     * @return 全角 String
     * 
     * @author Gyb
     */
    public static String DBC2SBC(String DBCString) {
if(DBCString == null){
   return null;
}
StringBuffer SBCString = new StringBuffer ("");
try {
   byte[] bytes = null;
   for (int i = 0; i < DBCString.length (); i++) {
String temp = DBCString.substring (i , i + 1);
boolean isContainLetters = Pattern.matches ("[0-9a-zA-Z]" , temp);
if (!isContainLetters) {
   bytes = temp.getBytes ("unicode");
   if (bytes[3] == 0) {
bytes[2] = (byte) (bytes[2] - 32);
bytes[3] = -1;
   }
   SBCString.append (new String (bytes , "unicode"));
}else{
   SBCString.append (temp);
}
   }
} catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace ();
}
return SBCString.toString ();
    }
方案二:

package test;

import java.util.*;

public class MultiDimArray {
/**  
* 半角全角转换及替换半角全角空白  
* @author maochangming  
*/  

     public static void main(String[] args) throws Exception {   
         try {   
             //去首尾空格,不管是全角半角:   
             String s = "nihaohk    nihehe     ";   
             System.out.println("s.length=" + s.length());   
             // s = s.replaceAll("^//s*|//s*$", "");   
             s = s.replaceAll("(^[ | ]*|[ | ]*$)", "");   
             s = s.replaceAll(" ", "");   
             System.out.println("s.length=" + s.length());   
             System.out.println("s===" + s);   
   
             String QJstr = "HELLO";   
             String QJstr1 = "HELLO";   
   
             String result = BQchange(QJstr);   
             String result1 = QBchange(QJstr1);   
   
             System.out.println(QJstr + "/n" + result);   
             System.out.println(QJstr1 + "/n" + result1);   
         } catch (Exception ex) {   
             throw new Exception("ERROR:" + ex.getMessage());   
         }   
     }   
   
     /**  
      * 半角转全角  
      * @param QJstr  
      * @return  
      */  
     public static final String BQchange(String QJstr) {   
         String outStr = "";   
         String Tstr = "";   
         byte[] b = null;   
   
         for (int i = 0; i < QJstr.length(); i++) {   
             try {   
                 Tstr = QJstr.substring(i, i + 1);   
                 b = Tstr.getBytes("unicode");   
             } catch (java.io.UnsupportedEncodingException e) {   
                 e.printStackTrace();   
             }   
   
             if (b[3] != -1) {   
                 b[2] = (byte) (b[2] - 32);   
                 b[3] = -1;   
                 try {   
                     outStr = outStr + new String(b, "unicode");   
                 } catch (java.io.UnsupportedEncodingException e) {   
                     e.printStackTrace();   
                 }   
             } else  
                 outStr = outStr + Tstr;   
         }   
   
         return outStr;   
     }   
   
     /**  
      * 全角转半角  
      * @param QJstr  
      * @return  
      */  
     public static final String QBchange(String QJstr) {   
         String outStr = "";   
         String Tstr = "";   
         byte[] b = null;   
   
         for (int i = 0; i < QJstr.length(); i++) {   
             try {   
                 Tstr = QJstr.substring(i, i + 1);   
                 b = Tstr.getBytes("unicode");   
             } catch (java.io.UnsupportedEncodingException e) {   
                 e.printStackTrace();   
             }   
   
             if (b[3] == -1) {   
                 b[2] = (byte) (b[2] + 32);   
                 b[3] = 0;   
                 try {   
                     outStr = outStr + new String(b, "unicode");   
                 } catch (java.io.UnsupportedEncodingException e) {   
                     e.printStackTrace();   
                 }   
             } else  
                 outStr = outStr + Tstr;   
         }   
   
         return outStr;   
     }   
   
}  

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PAT 1065. 单身狗(25)
  • Project '' is missing required Java project: ''
  • 没项目和要发项目请来,全套flex网站,软件项目交易网站-天人项目网
  • 初识Struts2
  • 重读《从菜鸟到测试架构师》-- 大促带来的灾难
  • MyEclipse/Eclipse的内存优化与内存不足的解决办法
  • FLEX RSL(让你的swf瘦身)
  • SVN1.6.3 教程 搭建服务器及myeclipse客户端使用
  • Python学习札记(三十五) 面向对象编程 Object Oriented Program 6
  • Flex SEO(Search engine optimization),让浏览器找到你的flash站点
  • [BSGS算法]纯水斐波那契数列
  • “天人项目网“亮相2009中国杭州电博会
  • 理解OAuth 2.0
  • 配置Flex Builder 使用Firefox进行调试
  • droppable
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • Android系统模拟器绘制实现概述
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • go append函数以及写入
  • httpie使用详解
  • Java 23种设计模式 之单例模式 7种实现方式
  • magento2项目上线注意事项
  • October CMS - 快速入门 9 Images And Galleries
  • passportjs 源码分析
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 突破自己的技术思维
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 如何用纯 CSS 创作一个货车 loader
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # 飞书APP集成平台-数字化落地
  • (1)常见O(n^2)排序算法解析
  • (1)虚拟机的安装与使用,linux系统安装
  • (11)MATLAB PCA+SVM 人脸识别
  • (2)(2.10) LTM telemetry
  • (BFS)hdoj2377-Bus Pass
  • (C语言)fgets与fputs函数详解
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm码农论坛 毕业设计 231126
  • (十六)视图变换 正交投影 透视投影
  • (四)Linux Shell编程——输入输出重定向
  • (转)nsfocus-绿盟科技笔试题目
  • .form文件_SSM框架文件上传篇
  • .NET Core 项目指定SDK版本
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .Net 执行Linux下多行shell命令方法
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • /usr/bin/env: node: No such file or directory
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [000-01-030].Zookeeper学习大纲
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [C/C++]关于C++11中的std::move和std::forward
  • [C++]priority_queue的介绍及模拟实现