`
wyz191
  • 浏览: 96569 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

取汉字拼音首字母

阅读更多

package test;

public class WordToSpell {

//  国标码和区位码转换常量
     private static final int GB_SP_DIFF = 160;

// 存放国标一级汉字不同读音的起始区位码
     private static final int[] secPosvalueList = {
         1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787,
         3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086,
         4390, 4558, 4684, 4925, 5249, 5600};

// 存放国标一级汉字不同读音的起始区位码对应读音
     private static final char[] firstLetter = {
         'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j',
         'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
         't', 'w', 'x', 'y', 'z'};

// 获取一个字符串的拼音码
     public static String getFirstLetter(String oriStr) {
         String str = oriStr.toLowerCase();
         StringBuffer buffer = new StringBuffer();
         char ch;
         char[] temp;
         for (int i = 0; i < str.length(); i++) { //依次处理str中每个字符
             ch = str.charAt(i);
             temp = new char[] {
                 ch};
             byte[] uniCode = new String(temp).getBytes();
             if (uniCode[0] < 128 && uniCode[0] > 0) { // 非汉字
                 buffer.append(temp);
             }
             else {
                 buffer.append(convert(uniCode));
             }
         }
         return buffer.toString();
     }

     /** 获取一个汉字的拼音首字母。
      * GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码
      * 例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x43
      * 0x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’
      */

     private static char convert(byte[] bytes) {

         char result = '-';
         int secPosvalue = 0;
         int i;
         for (i = 0; i < bytes.length; i++) {
             bytes[i] -= GB_SP_DIFF;
         }
         secPosvalue = bytes[0] * 100 + bytes[1];
         for (i = 0; i < 23; i++) {
             if (secPosvalue >= secPosvalueList[i] &&
                 secPosvalue < secPosvalueList[i + 1]) {
                 result = firstLetter[i];
                 break;
             }
         }
         return result;
     }

     public static String getBarcode(String isbn) {
         String barcode = "978";
         int a = 0, b = 0;
         int m = 0;
         int c = 0; //偶数和为a,计数和为b
         //获取中间9位数字
         isbn = isbn.substring(isbn.indexOf("-") - 1, isbn.lastIndexOf("-"));
         isbn = isbn.replaceAll("-", ""); //去掉第一个-
         isbn = isbn.replaceAll("-", ""); //去掉第二个-
         barcode += isbn;
         for (int i = 0; i < barcode.length(); i++) {
             if (i % 2 == 0) {
                 b += Integer.parseInt(barcode.substring(m, m + 1));
                 m++;
             }
             else {
                 a += Integer.parseInt(barcode.substring(m, m + 1));
                 m++;
             }
         }
         a = a * 3; //偶数和乘3
         c = a + b; //a+b
         int last = 0;
         String str = c + ""; //获取c的字符串
         last = 10 - Integer.parseInt(str.substring(str.length() - 1, str.length()));
         if (last == 10) {
             last = 0;
         }
         barcode = barcode + last;
         return barcode;
     }
    
     public static void main(String[] arg){
      
      System.out.println(getFirstLetter("汉字"));
     }
 }

分享到:
评论

相关推荐

    Oracle查询取汉字拼音首字母

    Oracle查询取汉字拼音首字母Function

    取汉字拼音首字母的函数

    标题和描述中提到的“取汉字拼音首字母的函数”就是这样的一个功能,它能够帮助开发者快速地获取汉字串对应的拼音首字母。这种函数通常在中文文本处理的场景下被广泛应用。 首先,我们要理解汉字到拼音转换的基本...

    取汉字拼音首字母工具源码

    今天,我们要探讨的是一款“取汉字拼音首字母工具”的源码,其提供了将汉字准确转换成对应的拼音首字母的功能。尽管它是用Delphi语言编写的,但其设计原理和算法逻辑对其他编程语言也有重要的借鉴意义。 Delphi是...

    取汉字拼音首字母的Demo

    在给定的"取汉字拼音首字母的Demo"中,开发者可能遇到了这样的需求:用户界面显示一个ListView,其中的数据需要按照每个条目标题的汉字拼音首字母进行排序。这种功能常见于电话簿应用或者任何需要快速查找的列表。 ...

    excel中取汉字拼音首字母

    ### Excel中取汉字拼音首字母:VBA函数详解 在处理中文数据时,有时我们需要将汉字转换为其拼音的首字母,这在数据整理、排序或创建缩写时尤为有用。Excel本身并不直接支持这种功能,但通过VBA(Visual Basic for ...

    C#取汉字拼音首字母DEMO,支持多音字

    这篇关于"C#取汉字拼音首字母DEMO,支持多音字"的主题,涉及到的是使用C#编程语言来实现一个功能,该功能能够从汉字中提取出拼音的首字母,并且能够处理多音字的情况。这对于开发一些基于汉字的搜索、排序或者信息...

    SQL取汉字拼音首字母的存储过程

    SQL取汉字拼音首字母的存储过程。对于查询汉字的很方便,不用输汉字,输入汉字拼音首字母就OK了。

    取汉字拼音首字母的自定义EXCEL函数.

    取汉字拼音首字母的自定义EXCEL函数.取汉字拼音首字母的自定义EXCEL函数.

    java提取汉字拼音首字母

    java提取汉字拼音首字母的代码,简体中文的编码范围从B0A1(45217)一直到F7FE(63486),不支持多音字处理

    ORACLE中取汉字拼音首字母的存储过程

    本文将详细解析一个用于在Oracle中获取汉字拼音首字母的存储过程,该过程通过一系列精心设计的字符串转换逻辑实现。 ### 存储过程概述 存储过程名为`FUN_SPELLCODE`,它接受一个参数`PRM_SPELLIN`,类型为`VARCHAR...

    将汉字转为拼音首字母,获取取汉字拼音首字母

    本项目聚焦于实现一个功能,即将汉字转换为它们的拼音首字母,这对于信息检索、文本处理或创建搜索引擎等应用非常有用。下面将详细介绍这个功能的实现原理以及涉及到的相关知识点。 1. **汉字转拼音**: 在Delphi...

    计算机软件-商业源码-取汉字拼音首字母及五笔编码、角形码.zip

    该压缩包文件“计算机软件-商业源码-取汉字拼音首字母及五笔编码、角形码.zip”包含了用于处理汉字的计算机程序源代码。源码软件是指未经过编译和打包的原始程序代码,允许用户查看、修改和重新分发,这对于开发者来...

    PB 自动取字符串(汉字)的拼音首字母

    标题“PB自动取字符串(汉字)的拼音首字母”指的是在PowerBuilder(PB)这个编程环境中,实现一个功能,该功能能够将输入的汉字字符串转换为对应的拼音首字母。这在处理汉字数据时非常有用,比如创建关键词索引、搜索...

    pb12取汉字拼音首字母

    pb11 pb12 pb12.5 汉字 拼音 首字母

    SQL取得汉字拼音首字母

    SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母

    VB.NET取汉字拼音首字母DEMO,支持多音字

    因为VB.NET不支持指针,所以VB.NET这个汉字转拼音功能只能做成PY.dll这个文件来调用。自己使用就项目&gt;添加引用&gt;添加PY.dll即可,汉字转拼音的转换函数调用方法如DEMO中的示例。。WIN10+VS2015亲测可用。

    java 取出汉语字符串各汉字拼音首字母并大写

    ### Java 实现提取汉语字符串各汉字拼音首字母并大写 在Java中实现提取汉语字符串各汉字拼音首字母并将其转换为大写是一项常见的需求,尤其是在处理中文文本数据时。本篇文章将详细介绍如何通过Java代码来实现这一...

    【Access源码示例】--汉字转拼音首字母大写、转完整拼音

    【Access源码示例】--汉字转拼音首字母大写、转完整拼音

    取汉字拼音首字母的存储过程

    SQL存储过程,获取汉字首字母

    PB获取汉字拼音首字母

    标题中的“PB获取汉字拼音首字母”指的是使用PowerBuilder(PB)编程语言编写的一个功能,该功能能够提取汉字的拼音首字母,特别是汉字拼音的声母部分。在中文信息处理中,有时候我们需要将汉字转化为拼音表示,特别...

Global site tag (gtag.js) - Google Analytics