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("好"));   
 }  


相关文章
|
5天前
|
Java 容器
idea中关于java的图形化界面编程awt_container容器中Button(按钮)上汉字是乱码或者小方框的解决方法
idea中关于java的图形化界面编程awt_container容器中Button(按钮)上汉字是乱码或者小方框的解决方法
55 0
|
5天前
|
Java
Java正则表达式去掉非汉字字符
【5月更文挑战第11天】Java正则表达式去掉非汉字字符
18 3
|
9月前
|
Java
Java工具类——汉字转拼音
写了一个根据汉字获取拼音字符串的工具类
109 0
|
5天前
|
JSON Java fastjson
Java【问题 06】一次解决JSON.toJSONString和@RestController首字母大小写问题(特指属性首字母大写变小写)
Java【问题 06】一次解决JSON.toJSONString和@RestController首字母大小写问题(特指属性首字母大写变小写)
76 0
|
10月前
|
Java Maven
Java代码获取汉字的拼音或汉字首字母
今天写项目时,有需要将输入的汉字转化为拼音和提取每个汉字首字母的功能,随手记录分享一下
113 0
|
编解码 Java Maven
Java汉字转拼音(解决方案)
Java汉字转拼音(解决方案)
198 0
Java汉字转拼音(解决方案)
|
3天前
|
Java 测试技术
Java多线程的一些基本例子
【5月更文挑战第17天】Java多线程允许并发执行任务。示例1展示创建并启动两个`MyThread`对象,各自独立打印&quot;Hello World&quot;。示例2的`CounterExample`中,两个线程(IncrementThread和DecrementThread)同步地增加和减少共享计数器,确保最终计数为零。这些例子展示了Java线程的基本用法,包括线程同步,还有如Executor框架和线程池等更复杂的用例。
10 0
|
3天前
|
缓存 安全 Java
7张图带你轻松理解Java 线程安全,java缓存机制面试
7张图带你轻松理解Java 线程安全,java缓存机制面试
|
1天前
|
Java
Java一分钟之-并发编程:线程间通信(Phaser, CyclicBarrier, Semaphore)
【5月更文挑战第19天】Java并发编程中,Phaser、CyclicBarrier和Semaphore是三种强大的同步工具。Phaser用于阶段性任务协调,支持动态注册;CyclicBarrier允许线程同步执行,适合循环任务;Semaphore控制资源访问线程数,常用于限流和资源池管理。了解其使用场景、常见问题及避免策略,结合代码示例,能有效提升并发程序效率。注意异常处理和资源管理,以防止并发问题。
20 2
|
1天前
|
安全 Java 容器
Java一分钟之-并发编程:线程安全的集合类
【5月更文挑战第19天】Java提供线程安全集合类以解决并发环境中的数据一致性问题。例如,Vector是线程安全但效率低;可以使用Collections.synchronizedXxx将ArrayList或HashMap同步;ConcurrentHashMap是高效线程安全的映射;CopyOnWriteArrayList和CopyOnWriteArraySet适合读多写少场景;LinkedBlockingQueue是生产者-消费者模型中的线程安全队列。注意,过度同步可能影响性能,应尽量减少共享状态并利用并发工具类。
15 2