Android空格对其,及全角半角的转换

目录

  • 前言
  • 定义
    • 全角
    • 半角
  • 关系
  • 空格编码
    • 使用方法
  • 全角半角字符转换
    • 转半角
    • 转全角

前言

  在计算机屏幕上,一个汉字要占两个英文字符的位置,把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角"。在汉字输入时,系统提供"半角"和"全角"两种不同的输入状态,但是对于英文字母、符号和数字这些通用字符就不同于汉字,在半角状态它们被作为英文字符处理;而在全角状态,它们又可作为中文字符处理。如果处理不好就影响Android的xml布局上文字的对齐.半角和全角切换方法:

定义

全角

  全角指GB2312-80(《信息交换用汉字编码字符集·基本集》)中的各种符号,一个字符占用两个标准字符位置。一般的系统命令是不用全角字符的,只有在作文字处理时才会使用全角字符。

半角

  半角是指英文件ASCII码中的各种符号,一字符占用一个标准的字符位置。通常的英文字母、数字键、符号键都是半角的,在系统内部作为基本代码处理的,所以用户输入命令和参数时一般都使用半角.

关系

  全角状态下字母、数字符号等都会占两个字节的位置,也就是一个汉字那么宽,半角状态下,字母数字符号一般会占一个字节,也就是半个汉字的位置,全角半角下对汉字没有影响。

空格编码

  //中文全角空格,一个中文宽度
  //中文全角空格,一个中文宽度
\u3000 //中文全角空格,一个中文宽度
以上3种效果一样

  //半个中文宽度

\u0020 //半角空格
… //省略号...

  //普通的英文半角空格,但不换行
  //窄空格

使用方法

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓  名"
        android:textSize="30sp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="电子邮箱"
        android:textSize="30sp" />

效果如下:
效果图

全角半角字符转换

  1. 单击输入法工具条上的按钮或按键盘上的Shift+Space键来切换。
  2. 代码转换,代码如下:

转半角

/**
     全角空格为12288,半角空格为32
     其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
     * @param input 任意字符串
     * @return 半角字符串
     *
     */
    public static String ToDBC(String input) {
        char[] c = input.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == 12288) {
                //全角空格为12288,半角空格为32
                c[i] = (char) 32;
                continue;
            }
            if (c[i] > 65280 && c[i] < 65375)
                //其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
                c[i] = (char) (c[i] - 65248);
        }
        return new String(c);
    }

转全角

/**
         全角空格为12288,半角空格为32
         其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
     * @param input 任意字符串
     * @return 半角字符串
     *
     */
    public static String ToSBC(String input) {
        char[] c=input.toCharArray();
        for (int i = 0; i < c.length; i++)
        {
            if (c[i]==32)
            {
                c[i]=(char)12288;
                continue;
            }
            if (c[i]<127)
                c[i]=(char)(c[i]+65248);
        }
        return new String(c);
    }

参考链接

你可能感兴趣的:(Android,XML)