[学习笔记] 全角字符与半角字符的区别

概述

所有的中文字符都为全角字符,占两个字节(16位)。而相应的全角英文字符则与中文字符等宽,相应地,半角英文字符则与半个中文字符宽度相同。这种特性也正是二者名称的体现,全角:Full-width;半角:Half-width。

半角字符与全角字符的规律:

  • 半角字符的范围:33 (0x21) ~ 126 (0x7E)
  • 全角字符的范围:65281 (0xFF01) ~ 65374 (0xFF5E)
  • 全角字符与相应的半角字符恒差 65248 (0xFEE0),即全角字符对应的Code - 半角字母Code = 65248。如:
    char c1 = '('; // 中文括号 (
    char c2 = '(';  // 英文括号 (
    System.out.println((int)c1);
    System.out.println((int)c2);
    System.out.println((int)c1 - (int)c2);
    
    输出结果为:
    65288
    40
    65248
    

但空格例外:半角空格=32(0x20);全角空格=12288(0x3000)

在Java中判断全/半角字符:

在Java中,str.length()返回的是字符个数,而str.getBytes().length则返回的是字节数。则如果一个字符串中全部都是全角字符,那么str.length() = 2 * str.getBytes().length。反之如果一个字符串中全部都是半角字符,那么str.length() = str.getBytes().length。若str.getBytes().length < str.length() < 2 * str.getBytes().length,则字符串中既包含半角字符也包含全角字符(in most cases)。

public class JudgeWidth{
	public String fullOrHalf(String str){
		if( str.length() == 2 * str.getBytes().length ){
			return "Full Width Characters Only"
		}else if( str.length() = 2 * str.getBytes().length ){
			return "Half Width Characters Only"
		}else {
			return "Half-Full Width Characters Mixture"
		}
	}
}

你可能感兴趣的:(计算机基础)