关于全角半角转换(转)

见谅未能注明出处:

  1     第一种方法:
  2     /**
  3      * 特殊字符串转换
  4      * @Class Name FullCharConverter
  5      * @Author v-jiangwei
  6      * @Create In 2012-8-24
  7      */
  8     public class FullCharConverter {
  9
 10     /**
 11     * 全角转半角的 转换函数
 12     * @Methods Name full2HalfChange
 13     * @Create In 2012-8-24 By v-jiangwei
 14     * @param QJstr
 15     * @return String
 16     */
 17     public static final String full2HalfChange(String QJstr)
 18     {
 19     StringBuffer outStrBuf = new StringBuffer("");
 20     String Tstr = "";
 21     byte[] b = null;
 22     for (int i = 0; i < QJstr.length(); i++) {
 23     Tstr = QJstr.substring(i, i + 1);
 24     // 全角空格转换成半角空格
 25     if (Tstr.equals(" ")) {
 26     outStrBuf.append(" ");
 27     continue;
 28     }
 29     try {
 30     b = Tstr.getBytes("unicode");
 31     // 得到 unicode 字节数据
 32     if (b[2] == -1) {
 33     // 表示全角
 34     b[3] = (byte) (b[3] + 32);
 35     b[2] = 0;
 36     outStrBuf.append(new String(b, "unicode"));
 37     } else {
 38     outStrBuf.append(Tstr);
 39     }
 40     } catch (UnsupportedEncodingException e) {
 41     // TODO Auto-generated catch block
 42     e.printStackTrace();
 43     }
 44
 45     } // end for.
 46     return outStrBuf.toString();
 47
 48
 49     }
 50
 51
 52
 53     /**
 54     * 半角转全角
 55     * @Methods Name half2Fullchange
 56     * @Create In 2012-8-24 By v-jiangwei
 57     * @param QJstr
 58     * @return String
 59     */
 60     public static final String half2Fullchange(String QJstr)
 61     {
 62     StringBuffer outStrBuf = new StringBuffer("");
 63     String Tstr = "";
 64     byte[] b = null;
 65     for (int i = 0; i < QJstr.length(); i++) {
 66     Tstr = QJstr.substring(i, i + 1);
 67     if (Tstr.equals(" ")) {
 68     // 半角空格
 69     outStrBuf.append(Tstr);
 70     continue;
 71     }
 72     try {
 73     b = Tstr.getBytes("unicode");
 74     if (b[2] == 0) {
 75     // 半角
 76     b[3] = (byte) (b[3] - 32);
 77     b[2] = -1;
 78     outStrBuf.append(new String(b, "unicode"));
 79     } else {
 80     outStrBuf.append(Tstr);
 81     }
 82     return outStrBuf.toString();
 83     } catch (UnsupportedEncodingException e) {
 84     // TODO Auto-generated catch block
 85     e.printStackTrace();
 86     }
 87
 88     }
 89     return outStrBuf.toString();
 90     }
 91
 92
 93     /**
 94     * @Methods Name main
 95     * @Create In 2012-8-24 By v-jiangwei
 96     * @param args
 97     *            void
 98     */
 99     public static void main(String[] args) {
100     // TODO Auto-generated method stub
101     String QJstr = "814乡道";
102     String result = FullCharConverter.full2HalfChange(QJstr);
103     System.out.println(QJstr);
104     System.out.println(result);
105     System.out.println("------------------------------------");
106     // 半角转全角
107     String str = "G45大广高速";
108     System.out.println(str);
109     System.out.println(FullCharConverter.half2Fullchange(str));
110     }
111
112
113     }
114     第二种方法:
115     /**
116          * 半角转全角
117          * @param input String.
118          * @return 全角字符串.
119          */
120     public static String ToSBC(String input) {
121              char c[] = input.toCharArray();
122              for (int i = 0; i < c.length; i++) {
123                if (c[i] == ‘ ‘) {
124                  c[i] = ‘\u3000‘;
125                } else if (c[i] < ‘\177‘) {
126                  c[i] = (char) (c[i] + 65248);
127
128
129                }
130              }
131              return new String(c);
132     }
133
134          /**
135          * 全角转半角
136          * @param input String.
137          * @return 半角字符串
138          */
139      public static String ToDBC(String input) {
140          char c[] = input.toCharArray();
141               for (int i = 0; i < c.length; i++) {
142                 if (c[i] == ‘\u3000‘) {
143                   c[i] = ‘ ‘;
144                 } else if (c[i] > ‘\uFF00‘ && c[i] < ‘\uFF5F‘) {
145                   c[i] = (char) (c[i] - 65248);
146
147
148                 }
149               }
150               String returnString = new String(c);
151               return returnString;
152      }
153         public static void main(String[] args) {
154         String QJstr = "G45大广高速";
155     String result = StringUtil.ToDBC(QJstr);
156     System.out.println(result);
157
158     }

这里面对第一种说明下,对于一个字符,当转换为unicode编码时候,所对应的byte数组,第三个值对应0或者1,0代表半角,1代表全角

时间: 2024-11-11 07:20:40

关于全角半角转换(转)的相关文章

php字符串处理之全角半角转换

半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路. 一.概念 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)空格比较特殊,全角为 12288(0x3000),半角为 32 (0x20)而且除空格外,全角/半角按unicode编码排序在顺序上是对应的所以可以直接通过用+-法来处理非空格数据,对空格单独处理 二.实现思路 1. 找到目标unicode的字符,可

SQL 全角半角转换-(摘抄)

/****** SQL转换全角/半角函数 开始******/ CREATE FUNCTION ConvertWordAngle ( @str NVARCHAR(4000), --要转换的字符串 @flag bit --转换标志,0转换成半角,1转换成全角 )RETURNS nvarchar(4000) AS BEGIN DECLARE @pat nvarchar(8),@step int,@i int,@spc int IF @flag=0 SELECT @pat=N'%[!--]%',@ste

C#全角半角转换输出解决方法

Microsoft.VisualBasic 命名空间 Strings 模块 StrConv 函数就具有大写/小写.全角/半角.中文简体/繁体等转换功能,字符串转换应该说是VB.NET的强项,是这样的:VB.NET直接调StrConv函数就行了,C#版的则需要在项目中添加引用Microsoft.VisualBasic.dll, 然后就可以在C#程序中直接使用VB.NET的StrConv函数了. 在C#项目中添加引用Microsoft.VisualBasic.dll, 可以在C#程序中直接使用VB.

php 全角半角转换

<?phpheader("Content-type: text/html; charset=utf-8");// 第一个参数:传入要转换的字符串// 第二个参数:取0,半角转全角:取1,全角到半角function SBC_DBC($str, $args2) { $DBC = Array( '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , '

全角半角转换函数

--(此函数部分思路参考了CSDN上大力的转换函数) --邹建2005.01(引用请保留此信息)--*/ Go --创建函数 create function SBC2DBC ( @str nvarchar(4000), --要转换的字符串 @flag bit --转换标志,0转换成半角,1转换成全角 ) returns nvarchar(4000) as begin declare @pat nvarchar(8),@step int,@i int,@spc int if @flag=0 sel

JavaScript数字全角半角转换

</pre><pre name="code" class="javascript">///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 //半角转换为全角函数 function ToDBC(txtstring) { var tmp = ""; for(var i=0;i<txtstring.length;i++) { if(tx

java 字符创全角半角转换

/** * 半角转全角 * @param input 输入字符串参数 * @return 全角字符串. */ public static String convert2DoubleByte(String input) {    char c[] = input.toCharArray();    for(int i = 0; i < c.length; i++) {      if (c[i] == ' ')  c[i] = '\u3000';         else if (c[i] < 

全角半角转换

/// 转全角的函数(SBC case) /// ///任意字符串 ///全角字符串 /// ///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 /// public static String ToSBC(String input) { // 半角转全角: char[] c = input.ToCharArray(); for (int i = 0; i < c.Length; i++) { if (c[

Centos下输入法全角半角转换

写个文档 ,发现输入法的设置框没有了,打出来的字全是全角,找了半天终于发现在设置的快捷键. 废话少说,Centos的全角半角转换快捷键是shift+space. 中英文标点的转换快捷键 ctrl+.