汉字问题【比较】

原创 2004年09月03日 14:51:00

不知是那个大侠的东东,不错啊~~

public class Letter {
  private static String _FromEncode_ = "GBK";
  private static String _ToEncode_ = "GBK";
  public  Letter() {
  }

  public static int compare(String str1,String str2){
    int result =0;
    String m_s1 = null,m_s2 = null;
    try {
      m_s1 = new String(str1.getBytes(_FromEncode_),_ToEncode_);
      m_s2 = new String(str2.getBytes(_FromEncode_),_ToEncode_);
    } catch(Exception e){
      return str1.compareTo(str2);
    }
    result = chineseCompareTo(m_s1,m_s2);
    return result;
  }

  public  static int getCharCode(String s){
    if (s == null && s.equals(""))
      return -1;
    byte[] b = s.getBytes();
    int value = 0;
    for (int i = 0; i < b.length && i <= 2; i++){
      value = value*100 + b[i]; //*100左移
    }
    return value;
  }

  public static int chineseCompareTo(String s1, String s2) {
    int len1 = s1.length();
    int len2 = s2.length();
    int n = Math.min(len1, len2);
    for (int i = 0; i < n; i++) {
      int s1_code = getCharCode(s1.charAt(i) + "");
      int s2_code = getCharCode(s2.charAt(i) + "");
      if (s1_code*s2_code<0)
        return Math.min(s1_code,s2_code);
      if (s1_code != s2_code)
        return s1_code - s2_code;
    }
    return len1 - len2;
  }


  public static String getBeginCharacter(String res) {
    String a = res;
    String result = "";
    String current;

    for(int i=0;i<a.length();i++){
      current = a.substring(i,i+1);
      if (Letter.compare(current,"啊")<0 ) //字母,数字原样返回
        result += current;
      else if ((Letter.compare(current, "啊")>=0) && (Letter.compare(current,"座")) <= 0){
        if (Letter.compare(current,"匝") >= 0)
          result += "z";
        else if (Letter.compare(current,"压") >=0)
          result += "y";
        else if (Letter.compare(current,"昔") >=0)
          result += "x";
        else if (Letter.compare(current,"挖") >=0)
          result += "w";
        else if (Letter.compare(current,"塌") >=0)
          result += "t";
        else if (Letter.compare(current,"撒") >=0)
          result += "s";
        else if (Letter.compare(current,"然") >=0)
          result += "r";
        else if (Letter.compare(current,"期") >=0)
          result += "q";
        else if (Letter.compare(current,"啪") >=0)
          result += "p";
        else if (Letter.compare(current,"哦") >=0)
          result += "o";
        else if (Letter.compare(current,"拿") >=0)
          result += "n";
        else if (Letter.compare(current,"妈") >=0)
          result += "m";
        else if (Letter.compare(current,"垃") >=0)
          result += "l";
        else if (Letter.compare(current,"喀") >=0)
          result += "k";
        else if (Letter.compare(current,"击") >0)
          result += "j";
        else if (Letter.compare(current,"哈") >=0)
          result += "h";
        else if (Letter.compare(current,"噶") >=0)
          result += "g";
        else if (Letter.compare(current,"发") >=0)
          result += "f";
        else if (Letter.compare(current,"蛾") >=0)
          result += "e";
        else if (Letter.compare(current,"搭") >=0)
          result += "d";
        else if (Letter.compare(current,"擦") >=0)
          result += "c";
        else if (Letter.compare(current,"芭") >=0)
          result += "b";
        else if (Letter.compare(current,"啊") >=0)
          result += "a";
      }
    }
    return result.toUpperCase();
  }
 
  public static void main(String[] args){
   Letter lt=new Letter();
   if(lt.getBeginCharacter("测试").Equals("CS"))System.out.println("Successed!");
  }

}

 

 

PHP中字符串比较的常用方法

按字节比较 按字节比较字符串是最常用的方法。其中可能用到的函数为strcmp()和strcasecmp()。 这两个函数的区别为strcmp()区分字符的大小写,strcasecmp()不区分字符...
  • qq_28602957
  • qq_28602957
  • 2016年03月22日 21:42
  • 4751

java抓取文字的最大相似度

public static void main(String[] args) { //要比较的两个字符串 String str1 = "汗1滴禾下土"; String str2 = "汗滴...
  • xb12369
  • xb12369
  • 2014年12月01日 17:54
  • 1643

[C++]string中文的匹配问题

何谓匹配根据string定义的find函数,可以实现查找子串:string str("abc"); if ((int)str.find("bc") > 0) printf("okay\n");...
  • u013581035
  • u013581035
  • 2016年02月04日 13:16
  • 2542

oracle数据库中varchar类型字段中存放的有数字和汉字情况,比较大小问题解决

如果你也正在为这种问题头疼,当你看到我这篇博客时,恭喜你,问题的解决方案来了,你头疼的问题可以解决了。 这个问题是我在最近的项目中遇到的难题,上网查阅了很多资料,都没能解决问题,最后还是问了大牛,才解...
  • wangyidasb
  • wangyidasb
  • 2016年02月25日 17:53
  • 1546

JSP Servlet 中的汉字编码问题

  • 2010年02月10日 22:35
  • 37KB
  • 下载

JTEST A-D级漢字問題(2002-2006年真题)PDF

  • 2009年01月03日 12:33
  • 542KB
  • 下载

解决Source Insight半个汉字问题

  • 2011年02月08日 23:29
  • 3KB
  • 下载

搞定SourceInsight的半个汉字的问题

  • 2010年12月29日 16:32
  • 19KB
  • 下载

Struts+Hibernate中解决汉字编码问题

  • 2012年05月09日 16:42
  • 30KB
  • 下载

table 汉字问题。

  • 2011年04月17日 12:11
  • 10KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汉字问题【比较】
举报原因:
原因补充:

(最多只允许输入30个字)