原理: GB2312编码中的中文是按照拼音排序的

注意: 一些生僻的字无法获得正确的首字母,原因是这些字都是后加入的。

import java.io.UnsupportedEncodingException;

/**

* 取得给定汉字串的首字母串,即声母串

*

* 注:只支持GB2312字符集中的汉字

*/

class ChineseInital {

private final static int[] areaCode = { 1601, 1637, 1833, 2078, 2274,

2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858,

4027, 4086, 4390, 4558, 4684, 4925, 5249, 5590 };

private final static String[] letters = { "a", "b", "c", "d", "e",

"f", "g", "h", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",

"t", "w", "x", "y", "z" };

/**

* 取得给定汉字串的首字母串

* @param str 给定汉字串

* @return 所有字符的首字母

*/

public static String getAllFirstLetter(String str) {

if (str == null || str.trim().length() == 0) {

return "";

}

String _str = "";

for (int i = 0; i < str.length(); i++) {

_str = _str + this.getFirstLetter(str.substring(i, i + 1));

}

return _str;

}

/**

* 取得给定汉字的首字母,即声母

* @param chinese 给定的汉字

* @return 给定汉字的声母

*/

public static String getFirstLetter(String chinese) {

if (chinese == null || chinese.trim().length() == 0) {

return "";

}

chinese = this.conversionStr(chinese, "GB2312", "ISO8859-1");

if (chinese.length() > 1) // 判断是不是汉字

{

int li_SectorCode = (int) chinese.charAt(0); // 汉字区码

int li_PositionCode = (int) chinese.charAt(1); // 汉字位码

li_SectorCode = li_SectorCode - 160;

li_PositionCode = li_PositionCode - 160;

int li_SecPosCode = li_SectorCode * 100 + li_PositionCode; // 汉字区位码

if (li_SecPosCode > 1600 && li_SecPosCode < 5590) {

for (int i = 0; i < 23; i++) {

if (li_SecPosCode >= areaCode[i]

&& li_SecPosCode < areaCode[i + 1]) {

chinese = letters[i];

break;

}

}

} else // 非汉字字符,如图形符号或ASCII码

{

chinese = this.conversionStr(chinese, "ISO8859-1", "GB2312");

chinese = chinese.substring(0, 1);

}

}

return chinese;

}

/**

* 字符串编码转换

* @param str 要转换编码的字符串

* @param charsetName 原来的编码

* @param toCharsetName 转换后的编码

* @return 经过编码转换后的字符串

*/

private static String conversionStr(String str, String charsetName,String toCharsetName) {

try {

str = new String(str.getBytes(charsetName), toCharsetName);

} catch (UnsupportedEncodingException ex) {

System.out.println("字符串编码转换异常:" + ex.getMessage());

}

return str;

}

}

调用:

String s = ChineseInital.getAllFirstLetter("中华人民共和国");

System.out.println(s); // => "zhrmghg"

(整理于网络)

php 获取中文字符拼音首字母

//php获取中文字符拼音首字母 function getFirstCharter($str){ if(empty($str)){return '';} $fchar=ord($str{}); }); ...

php获取中文字符拼音首字母

//php获取中文字符拼音首字母 function getFirstCharter($str){ if(empty($str)){ return ''; } $fchar = ord($str{0}) ...

C&num;&amp&semi;Sql获取中文字符拼音首字母的方法

C#获取字符拼音首字母,可以存储在数据库中以备将来按字母搜索的需求. public static string GetAc(string s) { try { string temp = Servic ...

js 获取中文的拼音首字母

es6 + 模块化封装 "use strict"; module.exports = { //参数,中文字符串 //返回值:拼音首字母串数组 makePy (str) { if ( ...

C&num; 获取汉字的拼音首字母和全拼(含源码)

C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手 ...

sqlserver 获取汉字拼音的首字母(大写)函数

1:创建函数: USE [test] GO /****** 对象: UserDefinedFunction [dbo].[GetFirstChar] 脚本日期: 02/22/2019 16:39:06 ...

JAVA的中文字符乱码问题

来源:http://luzefengoo.blog.163.com/blog/static/1403593882012754428536/ JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应用 ...

C&num;获取汉字拼音和首字母

C#获取汉字拼音和首字母 引入NPinyin using NPinyin; 调用 /// /// 中文首字母大写 /// /// &l ...

SqlServer 笔记二 获取汉字的拼音首字母

一.该函数传入字符串,返回数据为:如果为汉字字符,返回该字符的首字母,如果为非汉字字符,则返回本身. 二.用到的知识点:汉字对应的UNICODE值,汉字的排序规则. 三.数据库函数: )) ) AS ...

随机推荐

&lt&semi;十五&gt&semi;JDBC&lowbar;使用 DBUtils 进行更新、查询操作

详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...

Crusher Django 学习笔记4 使用Model

http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial4-using-basic.html 顺便学习一下FQ Crush ...

linux 内核 zImage 生成过程分析

1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息.符号表的最初的内核,大小约23MB: arm ...

CSAPP-程序优化

代码移动: 如果一个表达式总是得到同样的结果,最好把它移动到循环外面,这样只需要计算一次.编译器有时候可以自动完成,比如说使用 -O1 优化.一个例子: void set_row(double *a, ...

使用 WRK 压力测试工具对 ASP&period;NET Core 的接口进行压力测试

0. 简要介绍 WRK 是一款轻量且易用的 HTTP 压力测试工具,通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试,并且针对测试的情况返回结果. PS:Wrk 并不能针对测试的 ...

Linux基础命令---修改用户信息usermod

usermod 修改用户的信息,包括用户名.密码.家目录.uid等. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 use ...

numRecordsIn 在哪里实现?

/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreem ...

JS 根据子网掩码,网关计算出所有的IP范围

// 验证IP的正则 var ip_reg = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0- ...

java取字符串首字母_java 获取中文字符的首字母相关推荐

  1. php获取中文字符拼音首字母

    php获取中文字符拼音首字母 function getFirstCharter($str){if(empty($str)){return ''; }$fchar=ord($str{0});if($fc ...

  2. java 汉字 字母_JAVA获取中文汉字字符串拼音首字母,英文字符不变的工具类

    java在处理项目需求时,有时需要排序,尤其是中文名字按0-9,A-Z进行首字母排序,这时候就需要首先要得到中文字符串的首字母,然后按照字母顺序进行排序,不多说,直接上代码,看java如何获取中文字符 ...

  3. java 拼音首字母_java获取中文拼音首字母的实例

    导读热词 正文 如下所示: import net.sourceforge.pinyin4j.PinyinHelper; public class PinyinHelperUtil { /** * 得到 ...

  4. java获取首字母_Java 获取中文首字母的方法

    获取一个字符串的首字母是中文排序以及按照字母搜索的基础,一下是实现一个字符串转换为每个汉字首字母的字符串 //根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串 public String get ...

  5. java汉字的拼音首字母_Java 获取汉字的拼音首字母

    Java 获取汉字的拼音首字母: pom.xml 引用 pinyin4j 包: com.belerweb pinyin4j 2.5.0 PinyinUtil 类: package com.xxx.co ...

  6. java获取汉字的拼音首字母_java获取汉字的拼音首字母

    import java.io.UnsupportedEncodingException; /** * 取得给定汉字串的首字母串,即声母串 * Title: ChineseCharToEn * @dat ...

  7. java取网页源码_Java获取任意http网页源代码的方法

    本文实例讲述了JAVA获取任意http网页源代码.分享给大家供大家参考,具体如下: JAVA获取任意http网页源代码可实现如下功能: 1. 获取任意http网页的代码 2. 获取任意http网页去掉 ...

  8. java 取当前时间年月日_Java获取当前时间年月日的方法

    本文实例为大家分享了java获取当前时间年月日的具体代码,供大家参考,具体内容如下 import java.text.ParseException; import java.text.SimpleDa ...

  9. java 取当天0点_java 获取当天(今日)零点零分零秒

    两种方法 一种得到的是时间戳,一种得到是日期格式: 1.日期格式的 Calendar calendar = Calendar.getInstance(); calendar.setTime(new D ...

最新文章

  1. Angular-cli生成组件修改css成less或sass
  2. mysql not in语句_MySQL命令
  3. Windows中动态磁盘管理
  4. Xtreme ToolkitPro 编译过程详解
  5. Open WebRTC Toolkit实时视频分析系统
  6. 从有理数到实数和数的连续体
  7. python中的Lambda表达式/函数
  8. oracle复杂的子查询,Oracle 子查询(复杂select语句)
  9. php 随机生成ip
  10. 同步与异步,如何解决线程安全问题—synchronized详解,对象锁与类锁,静态与非静态同步方法详解
  11. 稳压二极管真的可以稳压吗?
  12. 后台管理系统PRD该怎么写?
  13. WebService的简单示例
  14. Geek卸载,Windows电脑再无卡顿
  15. 16位算术逻辑运算实验
  16. 【数论】线性筛与积性函数
  17. 北京工作居住证续签注意的问题
  18. Linux的10个彩蛋
  19. 计算机常用的网络安全技术有哪些,简述计算机的网络安全技术有哪些常用技术?...
  20. 2020-08 前端技术汇总

热门文章

  1. 达人评测 红米K30s至尊纪念版和iQOO Neo5活力版
  2. prometheus-容器健康状况监控
  3. ForkJoinPool的使用及基本原理
  4. ARC 强变量 弱变量
  5. 【哈士奇赠书活动 - 23期】-〖你好 ChatGPT〗
  6. [深入研究4G/5G/6G专题-56]: L3信令控制-5-无线承载DRB管理
  7. php 过滤英文标点符号 过滤中文标点符号
  8. 牛牛的DRB迷宫II(构造)
  9. 接口的方式获取bing必应每天壁纸
  10. c4d里.gil和.gi2是什么文件?怎么打开