Java_获取汉字的汉语拼音首字母Java版(转)

简介: Java_获取汉字的汉语拼音首字母Java版(转)
public class GetFirstLetter {   
  
 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++) {    
       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().substring(0,1);   
 }   
  
 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 void main(String s[]){   
     
  System.out.print(getFirstLetter("好"));   
 }  


目录
打赏
0
2
2
0
84
分享
相关文章
2828. 判别首字母缩略词 --力扣 --JAVA
给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的首字母缩略词。例如,"ab" 可以由 ["apple", "banana"] 形成,但是无法从 ["bear", "aardvark"] 形成。 如果 s 是 words 的首字母缩略词,返回 true ;否则,返回 false 。
81 0
idea中关于java的图形化界面编程awt_container容器中Button(按钮)上汉字是乱码或者小方框的解决方法
idea中关于java的图形化界面编程awt_container容器中Button(按钮)上汉字是乱码或者小方框的解决方法
176 0
JAVA随机生成一个汉字的方法和代码
JAVA随机生成一个汉字的方法和代码
107 1
Java正则表达式去掉非汉字字符
【5月更文挑战第11天】Java正则表达式去掉非汉字字符
241 3
Java工具类——汉字转拼音
写了一个根据汉字获取拼音字符串的工具类
283 0
Java【问题 06】一次解决JSON.toJSONString和@RestController首字母大小写问题(特指属性首字母大写变小写)
Java【问题 06】一次解决JSON.toJSONString和@RestController首字母大小写问题(特指属性首字母大写变小写)
956 0
Java代码获取汉字的拼音或汉字首字母
今天写项目时,有需要将输入的汉字转化为拼音和提取每个汉字首字母的功能,随手记录分享一下
339 0
Java多线程基础
本文主要讲解多线程相关知识,分为两部分。第一部分涵盖多线程概念(并发与并行、进程与线程)、Java程序运行原理(JVM启动多线程特性)、实现多线程的两种方式(继承Thread类与实现Runnable接口)及其区别。第二部分涉及线程同步(同步锁的应用场景与代码示例)及线程间通信(wait()与notify()方法的使用)。通过多个Demo代码实例,深入浅出地解析多线程的核心知识点,帮助读者掌握其实现与应用技巧。
|
5月前
|
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
292 60
【Java并发】【线程池】带你从0-1入门线程池
|
3月前
|
【源码】【Java并发】从InheritableThreadLocal和TTL源码的角度来看父子线程传递
本文涉及InheritableThreadLocal和TTL,从源码的角度,分别分析它们是怎么实现父子线程传递的。建议先了解ThreadLocal。
125 4
【源码】【Java并发】从InheritableThreadLocal和TTL源码的角度来看父子线程传递
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问