java 截取汉字首字母,java 取汉字首字母

有时候,可能会有一些类似这样的需求:

FNVb6v.png

对于这样的效果,我们可以有类似这样的解决方案:

package bys.utils;

import java.io.UnsupportedEncodingException;

/**

* Created by toutou on 2014/2/21

*/

public class ChineseCharacterHelper {

static final int GB_SP_DIFF = 160;

// 存放国标一级汉字不同读音的起始区位码

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 };

// 存放国标一级汉字不同读音的起始区位码对应读音

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' };

/**

* 提取汉字字符串的首字母

* @param characters 汉字字符串

* @return

*/

public static String getSpells(String characters) {

StringBuffer buffer = new StringBuffer();

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

char ch = characters.charAt(i);

if ((ch >> 7) == 0) {

// 判断是否为汉字,如果左移7为为0就不是汉字,否则是汉字

buffer.append(ch);

} else {

char spell = getFirstLetter(ch);

buffer.append(String.valueOf(spell));

}

}

return buffer.toString();

}

/**

* 获取一个汉字的首字母

* @param ch 汉字

* @return

*/

public static Character getFirstLetter(char ch) {

byte[] uniCode = null;

try {

uniCode = String.valueOf(ch).getBytes("GBK");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

return null;

}

if (uniCode[0] < 128 && uniCode[0] > 0) { // 非汉字

return null;

} else {

return convert(uniCode);

}

}

/**

* 获取一个汉字的拼音首字母。 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;

}

}

调用示例  String carName = ChineseCharacterHelper.getSpells(String.valueOf(user.getName().charAt(0))).toUpperCase();

作  者:http://www.cnblogs.com/toutou/

关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我

声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

作者:请叫我头头哥

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux操作系统网络,网络安装linux操作系统

网络安装安装的准备首先配仓库然后需要安装的服务Yun y install tftp-serverYum y install dhcp开始实验配仓库安装tfpt包并进行配置Tftp-server dhcp tftp后&#xff0c;会在/var/lib/tftpboot这个文件&#xff0c;这个文件是作为linux安装的引导文件&#xff0c;将/mnt/isoli…

Linux使用ftp传输10g的文件,Ubuntu 16.04 安装ftp服务器传输文件

最近在搞深度学习&#xff0c;老师比较宝贝他的服务器&#xff0c;要求我以后负责管理服务器。往后所有要使用服务器的人都必须向我申请账号&#xff0c;然后只允许客户端访问&#xff0c;使用文件传输软件传输文件。像我这样一个Linux菜逼&#xff0c;这种要求不是赶鸭子上架嘛…

linux创建文件内容三行,shell之创建文件及内容的方法示例

shell之创建文件夹&#xff1a;[rootvbox-nginx shell_command]# vi ./mkdir.sh#!/bin/shparentDir"/media/sf_Project/self/smarty-frame/application/$1"fileName$2dirAndName$parentDir/$fileNameif [ ! -d "$dirAndName" ];thenmkdir $dirAndNameecho …

linux设备模型的主要功能,Linux设备模型(3)

Linux设备模型(3)_Uevent作者&#xff1a;蜗蜗 发布于&#xff1a;2014-3-10 20:39分类&#xff1a;统一设备模型1. Uevent的功能Uevent是Kobject的一部分&#xff0c;用于在Kobject状态发生改变时&#xff0c;例如增加、移除等&#xff0c;通知用户空间程序。用户空间程序收到…

lua_path环境变量设置linux,ubuntu16.04安装lua环境

1.官网下载源码 https://www.lua.org/download.htmlcurl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gztar zxf lua-5.3.5.tar.gzcd lua-5.3.5make linux test2.安装中报错lua.c:82:31: fatal error: readline/readline.h: 没有那个文件或目录compilation terminated.: recip…

皮尔洛和c罗讲什么语言,皮尔洛:如果我跟C罗是队友 我可能能成历史助攻王

皮尔洛&#xff1a;欧冠夺冠热门不包含皇马腾讯体育11月2日讯 近日皮尔洛在接受媒体采访时表示&#xff0c;本赛季欧冠的争夺将会十分激烈&#xff0c;除了尤文外&#xff0c;有四支球队也是欧冠桂冠有利的争夺者&#xff0c;但并不包括卫冕冠军皇马。另外皮尔洛还表示&#xf…

android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例

1.到libs聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据.2.下载聚合数据SDK,将开发包里的smscaptcha_sdk_v_1_1.jar拷贝到libs根目录下&#xff0c;将libJuheSDK_v_1_0.so拷贝到libs\armeabi目录下,如图:3…

代码混淆android.mk,利用ollvm进行代码混淆

OLLVM简介OLLVM(Obfuscator-LLVM)是瑞士西北应用科技大学于2010年6月份发起的一个项目&#xff0c;该项目旨在提供一套开源的针对LLVM的代码混淆工具&#xff0c;以增加对逆向工程的难度。OLLVM是基于LLVM实现的&#xff0c;LLVM是一个编译器框架&#xff0c;它也采用经典的三段…

鸿蒙系统的适配国产手机,真正的好消息!其它国产机,也在适配华为鸿蒙系统...

众所周知&#xff0c;据华为消费者业务软件部总裁王成录的说法&#xff0c;今年6月初&#xff0c;华为手机就能全面升级鸿蒙2.0&#xff0c;迟到近两年的、真正的“一夜之间就可以替换掉安卓”。而近日&#xff0c;又传出了真正的好消息&#xff0c;那就是其它国产手机厂商&…

三星s4 android 6.0吗,快了 三星手机适配Android 6.0时间公布

快了 三星手机适配Android 6.0时间公布2016年01月26日 00:04作者&#xff1a;董岩编辑&#xff1a;董岩文章出处&#xff1a;泡泡网原创分享作为全球范围内无可争议的安卓手机巨头之一&#xff0c;三星在为其旗下手机适配安卓新系统方面历来算是相当上心的一个厂家。日前就已经…

xrdpdf卡片在哪可下载_暑假学习英语字母,就是这样简单(附可打印字母卡下载)...

英语字母是所有英语学习的基础&#xff0c;所以&#xff0c;要想学好英语&#xff0c;第一步&#xff0c;必须是学好字母&#xff0c;为后面的更深层次的学习打下坚实的根基。今天&#xff0c;我们给大家分享最全面的英文字母学习法&#xff0c;建议收藏&#xff0c;文章最后附…

32 位的有符号整数_leetcode 7 整数反转

给出一个 32 位的有符号整数&#xff0c;你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123 输出: 321示例 2:输入: -123 输出: -321示例 3:输入: 120 输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数&#xff0c;则其数值范围为 [−231, 231 − 1]。请根…

安卓帧数监测软件_扬尘在线监测系统实现工地智能监控

近年来&#xff0c;随着越来越多的建设项目在建设中&#xff0c;建筑工地越来越广泛。传统人力检查的检查结果主要依靠估计&#xff0c;难以量化和分析&#xff0c;导致相应处罚的科学依据不足。扬尘在线监测系统实现了对施工现场的智能检测&#xff0c;可以对施工现场扬尘进行…

html 切换主题,html切换主题实现方案

方案一使用css的var属性&#xff0c;当然此时不考虑低版本浏览器。1&#xff0c;在default.css主题根元素定义颜色变量:root {--main_color: #03a9f4; // 主题色--main_light: #33baf7; // 二级主题色 常用背景为主题色下的hover--main_lighter: #65caf5; // 三级主题色 常用bo…

json取数据怎么取_干货速递丨书名应该怎么取?

很多作者开书前都会遇到这个困扰&#xff1a;“什么样的书名是好的&#xff1f;”在跟一线编辑广泛交流后&#xff0c;大家普遍认为&#xff1a;一个好书名&#xff0c;既应该是能突出作品内容特点、故事主题&#xff0c;又具有一定的趣味性的&#xff0c;能吸引读者&#xff0…

android加一减一控件,Android的步进器(增加/减少值)控件?

用于Android的步进器(增/减值)控件&#xff1f;没有像Android中的Stepper这样的内置控件但是您可以尝试这种方式android:layout_width"wrap_content"android:background"#ffffff"android:layout_height"wrap_content"android:orientation"h…

安装教程rtx2080ti_点云深度学习环境配置指南(一)Ubuntu16.04+RTX2080ti

【今日导读】想做点云深度学习&#xff1f;先把环境配置好吧。本期为初学者带来环境配置指南&#xff0c;有需求的同学赶快上手吧。配置为&#xff1a;Ubuntu16.04RTX2080tiNVIDIA驱动cuda10.1cudnn7.5。一、安装NVIDIA驱动法一(优先推荐)&#xff1a;先添加NVIDIA 的ppa 源&am…

计算机管理员相关知识,计算机管理员述职报告范文

计算机管理员述职报告范文计算机管理员述职报告范文尊敬的医院领导&#xff1a;我叫xxx&#xff0c;20xx年7月毕业于西南计算机科学与技术专业。20xx年8月到医院工作&#xff0c;从事网络管理工作已有4年时间&#xff0c;能够胜任本职工作&#xff0c;现将任职以来的主要工作报…

计算机网络5g,计算机网络参考模型与5G协议

一、分层思想将复杂的流程分解为几个功能相对单一的子过程(1)整个流程更加清晰&#xff0c;复杂问题简单化(2)更容易发现问题并针对性的解决问题二、OSI七层参考模型1984年颁布了开发系统互连(OSI)参考模型&#xff1b;一个开放式体系结构&#xff0c;将网络分为七层分层功能物…

双百双新产业项目是什么_投资380亿,广西38个“双百双新”产业项目开竣工

广西2020年四季度“双百双新”产业项目集中开竣工活动现场。图片由自治区工信厅提供柳州分会场视频连线。图片由自治区工信厅提供与会嘉宾。图片由自治区工信厅提供广西新闻网南宁12月8日讯(记者 谢琳琳)12月8日&#xff0c;广西举行2020年四季度“双百双新”产业项目集中开竣工…