java获取多个汉字的拼音首字母
- 本文属于http://java.chinaitlab.com/base/803353.html原创!!!
- public class PinYin2Abbreviation {
- // 简体中文的编码范围从B0A1(45217)一直到F7FE(63486)
- private static int BEGIN = ;
- private static int END = ;
- // 按照声 母表示,这个表是在GB2312中的出现的第一个汉字,也就是说“啊”是代表首字母a的第一个汉字。
- // i, u, v都不做声母, 自定规则跟随前面的字母
- private static char[] chartable = { '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈', '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', '撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', };
- // 二十六个字母区间对应二十七个端点
- // GB2312码汉字区间十进制表示
- private static int[] table = new int[];
- // 对应首字母区间表
- private static char[] initialtable = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 't', 't', 'w', 'x', 'y', 'z', };
- // 初始化
- static {
- for (int i = ; i < ; i++) {
- table[i] = gbValue(chartable[i]);// 得到GB2312码的首字母区间端点表,十进制。
- }
- table[] = END;// 区间表结尾
- }
- // ------------------------public方法区------------------------
- // 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串 最重要的一个方法,思路如下:一个个字符读入、判断、输出
- public static String cn2py(String SourceStr) {
- String Result = "";
- int StrLength = SourceStr.length();
- int i;
- try {
- for (i = ; i < StrLength; i++) {
- Result += Char2Initial(SourceStr.charAt(i));
- }
- } catch (Exception e) {
- Result = "";
- e.printStackTrace();
- }
- return Result;
- }
- // ------------------------private方法区------------------------
- /**
- * 输入字符,得到他的声母,英文字母返回对应的大写字母,其他非简体汉字返回 '0' *
- */
- private static char Char2Initial(char ch) {
- // 对英文字母的处理:小写字母转换为大写,大写的直接返回
- if (ch >= 'a' && ch <= 'z') {
- return (char) (ch - 'a' + 'A');
- }
- if (ch >= 'A' && ch <= 'Z') {
- return ch;
- }
- // 对非英文字母的处理:转化为首字母,然后判断是否在码表范围内,
- // 若不是,则直接返回。
- // 若是,则在码表内的进行判断。
- int gb = gbValue(ch);// 汉字转换首字母
- if ((gb < BEGIN) || (gb > END))// 在码表区间之前,直接返回
- {
- return ch;
- }
- int i;
- for (i = ; i < ; i++) {// 判断匹配码表区间,匹配到就break,判断区间形如“[,)”
- if ((gb >= table[i]) && (gb < table[i + ])) {
- break;
- }
- }
- if (gb == END) {// 补上GB2312区间最右端
- i = ;
- }
- return initialtable[i]; // 在码表区间中,返回首字母
- }
- /**
- * 取出汉字的编码 cn 汉字
- */
- private static int gbValue(char ch) {// 将一个汉字(GB2312)转换为十进制表示。
- String str = new String();
- str += ch;
- try {
- byte[] bytes = str.getBytes("GB2312");
- if (bytes.length < ) {
- return ;
- }
- return (bytes[] << & 0xff00) + (bytes[] & 0xff);
- } catch (Exception e) {
- return ;
- }
- }
- public static void main(String[] args) throws Exception {
- System.out.println(cn2py("重庆重视发展IT行业,大多数外企,如,IBM等进驻山城"));
- }
- }
java获取多个汉字的拼音首字母的更多相关文章
- C#获取包括一二级汉字的拼音 首字母
C#获取包括一二级汉字的拼音 首字母 声母 汉字拼音转换 using System; using System.Collections.Generic; using System.Linq; usin ...
- (转载)delphi中获取汉字的拼音首字母
delphi中获取汉字的拼音首字母1.py: array[216..247] of string = ({216}'CJWGNSPGCGNESYPB' + 'TYYZDXYKYGTDJNMJ' + ' ...
- 汉字转拼音首字母的java实现
工作中经常会遇到的一些排序问题,比如 按汉字的拼音首字母排序,比如人名排序等,就要用到下面的方法了,思路: 1. 获得汉字 2. 将汉字转换成首字母,并记录下(必要时保存到数据库) 3. 按首字母进行 ...
- sql获取汉字的拼音首字母的函数
ql获取汉字的拼音首字母 if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and ...
- C# 获取汉字的拼音首字母和全拼(含源码)
C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手 ...
- 获取汉字的拼音首字母--pinyin
var pinyin = (function (){ var Pinyin = function (ops){ this.initialize(ops); }, options = { checkPo ...
- js汉字转拼音首字母
js汉字转拼音首字母 2018-04-09 阅读 1018 收藏 1 原链:segmentfault.com 分享到: 前端必备图书<JavaScript设计模式与开发实践> > ...
- SqlServer 汉字转换拼音首字母函数
CREATE function [dbo].[Func_GetPY](@str nvarchar(4000))returns nvarchar(4000)asbegin set @str=RTRIM( ...
- 简单测试--C#实现中文汉字转拼音首字母
第一种: 这个是自己写的比较简单的实现方法,要做汉字转拼音首字母,首先应该有一个存储首字母的数组,然后将要转拼音码的汉字与每个首字母开头的第一个汉字即“最小”的汉字作比较,这里的最小指的是按拼音规则比 ...
随机推荐
- c# 查找一个字符串在另一个字符串出现的次数
方法一: string test = "FF FF FF FF 01 00 82 00 00 A2 00 00 FB 07 FF FF FF FF 01 00 82 00 00 A2 00 ...
- css页面缩放
如果原来的宽度是1200, 缩放之后宽度可能就变成了1560, 然后你本来的图片1200可能就开始显示不全了. 如果你的图片按100%显示的话,这个时候又正常了.
- python argpase模块简单使用
python2.7 手册地址:https://docs.python.org/2/howto/argparse.html#id1 实现效果:脚本程序可以带参数 python arg.py -h 一.位 ...
- 绑定自己Self
Header="{Binding Path=Command.Text, RelativeSource={RelativeSource Self}}"/>
- js执行环境、作用域
js执行环境.作用域 执行环境:是javascript中的一个重要的概念,<javascript高级程序设计第三版>的定义是:执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行 ...
- 【译】:lxml.etree官方文档
本文翻译自:http://lxml.de/tutorial.html, 作者:Stefan Behnel 这是一个关于使用lxml.etree进行XML处理的教程.它简要介绍了ElementTree ...
- fasttext和cnn的比较,使用keras imdb看效果——cnn要慢10倍。
fasttext: '''This example demonstrates the use of fasttext for text classification Based on Joulin e ...
- ElasticSearch_学习_01_单实例安装与分布式安装
一.前言 二.下载 1.下载地址 https://www.elastic.co/downloads/past-releases 三.单实例安装 直接解压,window下运行 elasticsearch ...
- 进程、线程、ThreadLlocal
1.线程是最小的执行单位,而进程中至少一个线程组:如果调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间 Unix/Linux操作系统提供了一个fork()系统调用,它非常 ...
- loj #6247. 九个太阳
求 $\sum\limits_{i=1}^n [k | i] \times C_n^i$ 膜 $998244353$ $n \leq 10^{15},k \leq 2^{20}$ $k$ 是 $2$ ...