精华内容
下载资源
问答
  • java全角字符转换为半角 半角转全角

    千次阅读 2012-05-30 10:20:15
    /// /// 判断字符是否英文半角字符或标点 /// /// /// 32 空格 /// 33-47 标点 /// 48-57 0~9 /// 58-64 标点 /// 65-90 A~Z /// 91-96 标点 /// 97-122 a~z /// 123-
    /// <summary>
        /// 判断字符是否英文半角字符或标点
        /// </summary>
        /// <remarks>
        /// 32    空格
        /// 33-47    标点
        /// 48-57    0~9
        /// 58-64    标点
        /// 65-90    A~Z
        /// 91-96    标点
        /// 97-122    a~z
        /// 123-126  标点
        /// </remarks>
        public static bool IsBjChar(char c)
        {
          int i = (int)c;
          return i >= 32 && i <= 126;
        }
    
        /// <summary>
        /// 判断字符是否全角字符或标点
        /// </summary>
        /// <remarks>
        /// <para>全角字符 - 65248 = 半角字符</para>
        /// <para>全角空格例外</para>
        /// </remarks>
        public static bool IsQjChar(char c)
        {
          if (c == '\u3000') return true;
    
          int i = (int)c - 65248;
          if (i < 32) return false;
          return IsBjChar((char)i);
        }
    
        /// <summary>
        /// 将字符串中的全角字符转换为半角
        /// </summary>
        public static string ToBj(string s)
        {
          if (s == null || s.Trim() == string.Empty) return s;
    
          StringBuilder sb = new StringBuilder(s.Length);
          for (int i = 0; i < s.Length; i++)
          {
            if (s[i] == '\u3000')
              sb.Append('\u0020');
            else if (IsQjChar(s[i]))
              sb.Append((char)((int)s[i] - 65248));
            else
              sb.Append(s[i]);
          }
    
          return sb.ToString();
        }
    


    全角空格为12288,半角空格为32

    其他字符半角(33-126)与考试.大提示全角(65281-65374)的对应关系是:均相差65248


    /***************************************
    *
    * 全角转换成半角
    * @param input 原始字符串
    * @return 转换后的字符串
    *
    ***************************************/
    public static String QtoB(String input) {
    char c[] = input.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);
    }
    }
    return new String(c);
    }
    //半角转全角
    public static String BtoQ(String input){
    char c[] = input.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);
    }


    展开全文
  •  * 全角转半角的 转换函数  * @Methods Name full2HalfChange  * @param QJstr  * @return String  */  public static final String full2HalfChange(String QJstr)  {  StringBuffer outStrBuf = ...
    /**
      * 全角转半角的 转换函数
      * @Methods Name full2HalfChange
      * @param QJstr
      * @return String
      */
      public static final String full2HalfChange(String QJstr)
      {
      StringBuffer outStrBuf = new StringBuffer("");
      String Tstr = "";
      byte[] b = null;
      for (int i = 0; i < QJstr.length(); i++) {
      Tstr = QJstr.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();

      }
      
      /**
      * 半角转全角
      * @Methods Name half2Fullchange
      * @param QJstr
      * @return String
      */
      public static final String half2Fullchange(String QJstr)
      {
      StringBuffer outStrBuf = new StringBuffer("");
      String Tstr = "";
      byte[] b = null;
      for (int i = 0; i < QJstr.length(); i++) {
      Tstr = QJstr.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();
      }

    展开全文
  • 背景:在做日文文本的...半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E) 特例: 空格比较特殊,全角为 12288(0x3000),半角为 32(0x20) 除空格外,全角/半角按unicode编码排序在顺序上是对应的(半角 +

    背景:

    在做日文文本的处理时候,统一半全角字符。

    分析:

    说明:
    全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)
    半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)
    特例:
    空格比较特殊,全角为 12288(0x3000),半角为 32(0x20)
    除空格外,全角/半角按unicode编码排序在顺序上是对应的(半角 + 0xfee0= 全角),所以可以直接通过用+-法来处理非空格数据,对空格单独处理。

    代码:

    # -*- coding: utf-8 -*-
    __author__ = 'jason'
    
    '''
    功能:
        全角转为半角
    
    
    注:
    1. 中文文字永远是全角,只有英文字母、数字键、符号键才有全角半角的概念,一个字母或数字占一个汉字的位置叫全角,占半个汉字的位置叫半角。
    2. 引号在中英文、全半角情况下是不同的
    
    chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
    unichr()跟它一样,只不过返回的是Unicode字符。
    ord()函数是chr()函数(对于8位的ASCII字符串)或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值。
    
    
    0x3000: u' ', 0x2212: u'-'
    '''
    def FullToHalf(mystring):
        n = []
        s = mystring.decode('utf-8')
        for char in s:
            num = ord(char)
            if num == 0x3000:
                num = 32
            elif 0xFF01 <= num <= 0xFF5E:
                num -= 0xfee0
            num = unichr(num)
            n.append(num)
        return ''.join(n)
    
    teststring = "abc-+--ABC123你好世界,。!、"
    resu = FullToHalf(teststring)
    print "原始字符串:\n%s" % (teststring)
    resu = resu.encode('utf8')
    print "转为半角后的字符串:\n%s" % resu
    
    #对于减号或者破折号的处理
    a_half = u'-'#半角减号---−
    print "半角减号unicode值=%#x" % (ord(a_half))
    a_full = u"-"#全角减号--−
    print "全角减号unicode值=%#x" % ord(a_full)
    print "全角减号:\n%s" % unichr(ord(a_full)).encode('utf-8')#全角减号
    print "半角减号1:\n%s" % unichr(ord(a_half)).encode('utf-8')#半角减号,0x2d
    print "半角减号2:\n%s" % unichr(0x2212).encode('utf-8')#半角减号,0x2212,其实这个符号并不在半角范围内
    chazhia_b = ord(a_full) - 0x2212
    new_ban_jiao = ord(a_full)-0xfee0#ascii=45,其实是减号/破折号
    print "减号全角和半角差值=%#x, 通过将全角减去0xfee0获取的半角:%s" % (chazhia_b, unichr(new_ban_jiao).encode('utf-8'))
    #其实仔细观看,通过减法获得到的减号和原生半角减号是不同的。
    
    quan_a = u'a'
    ban_a = u'a'
    diff_a = ord(quan_a)-ord(ban_a)
    print "quan_a=%#x,ban_b=%#x,diff_a=%#x" % (ord(quan_a),ord(ban_a),diff_a)
    chazhi1 = ord(quan_a)-0xfee0
    print "new_ban_a=%s" % (unichr(ord(quan_a)-diff_a))

    运行结果:

    这里写图片描述

    展开全文
  • 前言本文将给大家展示一下如何将char进行半角全角转换,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。术语全角SBC caseSexagesimal to Binary Converter60进制转为2进制半角DBC caseDecimal ...

    前言

    本文将给大家展示一下如何将char进行半角与全角转换,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

    术语

    全角

    SBC case

    Sexagesimal to Binary Converter

    60进制转为2进制

    半角

    DBC case

    Decimal to Binary Converter

    10进制转为2进制

    工具类

    public class AsciiUtil {

    public static final char SBC_SPACE = 12288; // 全角空格 12288

    public static final char DBC_SPACE = 32; //半角空格 32

    // ASCII character 33-126 unicode 65281-65374

    public static final char ASCII_START = 33;

    public static final char ASCII_END = 126;

    public static final char UNICODE_START = 65281;

    public static final char UNICODE_END = 65374;

    public static final char DBC_SBC_STEP = 65248; // 全角半角转换间隔

    public static char sbc2dbc(char src){

    if (src == SBC_SPACE) {

    return DBC_SPACE;

    }

    if (src >= UNICODE_START && src <= UNICODE_END) {

    return (char) (src - DBC_SBC_STEP);

    }

    return src;

    }

    /**

    * Convert from SBC case to DBC case

    *

    * @param src

    * @return DBC case

    */

    public static String sbc2dbcCase(String src) {

    if (src == null) {

    return null;

    }

    char[] c = src.toCharArray();

    for (int i = 0; i < c.length; i++) {

    c[i] = sbc2dbc(c[i]);

    }

    return new String(c);

    }

    public static char dbc2sbc(char src){

    if (src == DBC_SPACE) {

    return SBC_SPACE;

    }

    if (src <= ASCII_END) {

    return (char) (src + DBC_SBC_STEP);

    }

    return src;

    }

    /**

    * Convert from DBC case to SBC case.

    *

    * @param src

    * @return SBC case string

    */

    public static String dbc2sbcCase(String src) {

    if (src == null) {

    return null;

    }

    char[] c = src.toCharArray();

    for (int i = 0; i < c.length; i++) {

    c[i] = dbc2sbc(c[i]);

    }

    return new String(c);

    }

    }

    验证

    @Test

    public void testDBC(){

    System.out.println(AsciiUtil.sbc2dbcCase("hello world"));

    System.out.println(AsciiUtil.dbc2sbcCase("hello world"));

    }

    输出

    hello world

    hello world

    doc

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    展开全文
  • 工作中,发现有的电话号码存放时,是以全角存放的,为了整理这些不规范的数据,通过朋友找到相关的方法,终于解决了此问题。     using System; using System.Collections.Generic; using System.Text; ...
  • 全角转半角 半角转全角

    千次阅读 2006-12-25 15:49:00
    /**//**/ /**//// /// 转全角的函数(SBC case) /// /// 任意字符串 /// 全角字符串 /// ///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 
  • 下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。import java.util.regex.*;public static String replaceDBC2SBC(String input) {Pattern pattern = Pattern....
  • #region 全角转换半角以及半角转换为全角  ///转全角的函数(SBC case)  ///全角空格为12288,半角空格为32  ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差... // 半角转全角:   ch
  • <!--google_ad_client = "pub-2487365762057517";/* rewise */google_ad_slot = "1319852218";google_ad_width = 728;google_ad_height = 90;// -->全角转半角半角转全角,判断字符是否为全角 /// /// 全角
  • /*** 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符* @access public* @param string $str 待转换字串* @return string $str 处理后字串*/function make_semiangle...
  • #region 半角转换为全角 /// <summary> ... ////转全角的函数(SBC case) ///任意字符串 ///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关...
  • 简单说来,就是全角空格为12288... 下面是随手写的一个VBA宏,运行于 Word,可将活动文档中全部英文半角字符转全角。(但速度之慢啊,转1000多个字符要花2-3分钟) Sub ttt()Dim i As Long, ac As Long For i = App
  • package com.opslab.util.algorithmImpl; ... /** * 提供对字符串的全角->半角半角->全角转换 */public class BCConvert { /** * ASCII表中可见字符从!开始,偏移位值为33(Decimal) */ stat...
  • /** * 全角空格为12288,半角空格为32 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 */ public static String ToSBC(String input) { // 半角转全角: char[] c = input.toCharArray();...
  • 全角转半角半角转全角代码 /** * * 提供对字符串的全角->半角半角->全角转换 * codingwhy.com * */ public class BCConvert { /** * ASCII表中可见字符从!开始,偏移位值为33(Decimal) */ static...
  • 在C#中,我们可以通过程序的方法,将相应的半角字符串信息转换为全角类型,也可以实现全角转半角功能。 相应封装好的方法如下: /// <summary>/// 转全角的函数(SBC case)/// </summary>/// <param ...
  • /***半角转全角*@paraminput输入字符串参数*@return全角字符串.*/publicstaticStringconvert2DoubleByte(Stringinput){charc[]=input.toCharArray();for(inti=0;iif(c[i]==‘‘)c[i]=‘\u3000‘;elseif(c[i]...
  • 在C#中,我们可以通过程序的方法,将相应的半角字符串信息转换为全角类型,也可以实现全角转半角功能。 相应封装好的方法如下: /// <summary> /// 转全角的函数(SBC case) /// </summary> /...
  • 第一种方法: /**  * 特殊字符串转换  * @Class Name FullCharConverter  * @Author v-jiangwei  * @Create In 2012-8-24  */ ...* 全角转半角的 转换函数 * @Methods Name full2HalfChange
  • /** * 半角转全角 * @param input String. * @return 全角字符串. */ public static String ToSBC(String input) { char c[] = input.toCharArray(); for (int i = 0; i )
  • /*** 半角转全角* @param input String.* @return 全角字符串.*/public static String ToSBC(String input) {char c[] = input.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == ' ') {c[i] = '\u...
  • 字符全角半角转换

    2017-09-11 09:59:33
    /** * 字符串全角半角转换 ... * @param int $flag ,0|1 $flag=0半角转全角,$flag = 1 全角转半角, * @return string 字符串 */ function strFullHalf($str, $flag = 0) { $str = trim($str); if (empty($

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,023
精华内容 409
关键字:

半角字符转全角