汉字的特点使我们要碰上两个最基本且又非常重要的概念,那就是全角与半角.形象的说,在使用英文输入法时,电脑屏幕上,一个英文字符(如“a”)所占的位置,人们称其为“半角”, <而一个汉字所占的位置则等于两个英文字符,故称其为“全角”。 在我们日常使用的电脑系统里,初始输入法一般都默认为英文输入法,这时自然会处在半角状态下,无论是输入字母、符号还是数字,始终都只占一个英文字符的位置。若切换到中文输入法状态中,则会有全角半角两种选择,对中文字符来说,这两种选择对其没有影响,它始终都要占两个英文字符的位置,但对此状态下输入的符号、数字以及英文字母来说,就显得很重要,如以下所示: “QUAN” “QUAN”
前者输入选择的是半角,后者为全角,两者呈现的结果差异很大,在选择全角后,即便是字母、符号、数字都无一例外地要被当成汉字进行处理,从视觉角度上看,它们因此也显得别扭了许多。
很多人往往会忽视半角和全角间的切换,这样他们遇到一些怪事也不足为奇,比如我们上网时经常要输入密码或网址,若此时在全角状态下进行,只能因系统无法确认而导致失败;还有在发送电子邮件的时候,把电子邮件地址写成xxx@xxx.com,即全角“@”的形式,而非符合规定的半角“@”形式,结果也只能是无法成功发送邮件。要强调的是,在绝大多数场合里,都要求使用半角进行输入。
前者输入选择的是半角,后者为全角,两者呈现的结果差异很大,在选择全角后,即便是字母、符号、数字都无一例外地要被当成汉字进行处理,从视觉角度上看,它们因此也显得别扭了许多。
很多人往往会忽视半角和全角间的切换,这样他们遇到一些怪事也不足为奇,比如我们上网时经常要输入密码或网址,若此时在全角状态下进行,只能因系统无法确认而导致失败;还有在发送电子邮件的时候,把电子邮件地址写成xxx@xxx.com,即全角“@”的形式,而非符合规定的半角“@”形式,结果也只能是无法成功发送邮件。要强调的是,在绝大多数场合里,都要求使用半角进行输入。
/*
全角和半角的区别:
全角是指中文输入法状态条中的“半月”变成“满月”的时候,此时输入的英文字符会占用两个字节,通俗地说,就是
所输入的英文字符看起来和中文字一样宽。
比如:
全角状态下:ABCDEFGHIJKLMNOPQRSTUVWXYZ
半角状态下:ABCDEFGHIJKLMNOPQRSTUVWXYZ
另外,标点符号也分中文态和英文态两种,要注意它们之间的切换。比如:
中文态下:,。;“”《》……
英文态下:,.;""<>.........
*/
public class HanZiCheck
{
public void check(String str) {
int length = str.length();
int bytLength = str.getBytes().length;
//都是半角的情况
if(bytLength == length) {
System.out.println("都是半角");
}
//都是全角的情况
else if(bytLength == 2 * length) {
System.out.println("都是全角");
}
//有全角有半角
else {
System.out.println("有全角有半角");
}
}
public static void main(String[] args)
{
HanZiCheck hzc=new HanZiCheck();
hzc.check("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); //全角
hzc.check("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); //半角
hzc.check(",.;<>........."); //半角
hzc.check(",。;“”《》……"); //全角
hzc.check("ABCD ABCDEF"); //全角半角混合
hzc.check(",.《》……"); //全角半角混合
hzc.check("我是全角字"); //全角汉字
hzc.check("我是半角字"); //半角汉字
}
}
运行后的结果是:
都是全角
都是半角
都是半角
都是全角
有全角有半角
有全角有半角
都是全角
都是全角
总结:对于字母和标点符号,可以用这种方法来判断是全角还是半角;对于汉字,判断是全角还是半角不能使用这种方法。