Topic: 全角半角的区分

  Print this page

1.全角半角的区分 Copy to clipboard
Posted by: jenopob
Posted on: 2005-09-19 13:14

请问用JAVA语言来实现全角和半角的区分怎么来实现

private boolean check(String value) {
//半角的情况
if("半角的情况") {
return true;
}

if("全角的情况") {
return false;
}
}

具体如何来实现,有简单而又高效的方法吗?谢谢!

2.Re:全角半角的区分 [Re: jenopob] Copy to clipboard
Posted by: jenopob
Posted on: 2005-09-20 11:35

int length = str.length();
int bytLength = str.getByte().length();

if(bytLength == length) {
//都是半角
}

if(bytLength < 2 * length) {
//有全角有半角
}

if(bytLength == 2 * length) {
//都是全角
}

感觉还是不对!先这么写了一下!

3.Re:全角半角的区分 [Re: jenopob] Copy to clipboard
Posted by: zcjl
Posted on: 2005-09-20 17:50

我在这个帖子http://www.cjsdn.net/post/view?bid=1&id=155394&sty=1里帖出了一段代码,截取String(包含你所谓全角和半角)的一部分来显示,也许对你有所帮助?

4.Re:全角半角的区分 [Re: jenopob] Copy to clipboard
Posted by: GlennLi
Posted on: 2005-09-22 13:19

二楼有没有测试过你的代码?
我觉得你那样的判断不正确,半角字不一定就是单字节的。
你的判断其实就是单字节和双字节的判断。

5.Re:全角半角的区分 [Re: jenopob] Copy to clipboard
Posted by: GlennLi
Posted on: 2005-09-22 14:33

我将楼主的代码修改后如下:
/*
全角和半角的区别:
全角是指中文输入法状态条中的“半月”变成“满月”的时候,此时输入的英文字符会占用两个字节,通俗地说,就是
所输入的英文字符看起来和中文字一样宽。
比如:
全角状态下: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("我是半角字"); //半角汉字

  }
}


运行后的结果是:
都是全角
都是半角
都是半角
都是全角
有全角有半角
有全角有半角
都是全角
都是全角

总结:对于字母和标点符号,可以用这种方法来判断是全角还是半角;对于汉字,判断是全角还是半角不能使用这种方法。

6.Re:全角半角的区分 [Re: jenopob] Copy to clipboard
Posted by: wzl0917
Posted on: 2005-11-07 14:49

GlennLi 严谨的学习作风令我PF


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923