搜索
查看: 485|回复: 0

姓名字典自动生成工具(多种规则批量生成)

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2015-8-21 18:32:30 | 显示全部楼层 |阅读模式
java版的.
主要生成的格式如下:
  1. wangdachui
  2. wdc
  3. wangdac
  4. wdachui
  5. wang.dachui
  6. dachui.wang
  7. dc.wang
  8. wang.dc
复制代码
支持多行姓名批量生成

软件下载地址:
游客,如果您要查看本帖隐藏内容请回复



没有你的规则?没关系,下面是源码,自己改改就有了..

源码:
HuoQuPinYin.java
  1. package com.zidian;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. import net.sourceforge.pinyin4j.PinyinHelper;
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  6. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  7. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  8. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  9. /**
  10. * 拼音工具
  11. *
  12. * @author ceo@tom.com
  13. */
  14. public class HuoQuPinYin {
  15.     /**
  16.      * 获取汉字串拼音首字母,英文字符不变
  17.      *
  18.      * @param chinese 汉字串
  19.      * @return 汉语拼音首字母
  20.      */
  21.     public static List cn2FirstSpell(String chinese) {
  22.         List list=new ArrayList();
  23.             char[] arr = chinese.toCharArray();
  24.             HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  25.             defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  26.             defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  27.             
  28.             for (int i = 0; i < arr.length; i++) {
  29.                     if (arr[i] > 128) {
  30.                             try {
  31.                                     String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
  32.                                     if (_t != null) {
  33.                                             list.add(_t[0].charAt(0));
  34.                                     }
  35.                             } catch (BadHanyuPinyinOutputFormatCombination e) {
  36.                               return list;
  37.                             }
  38.                     } else {
  39.                             list.add(arr[i]);
  40.                     }
  41.             }
  42.             return list;
  43.     }

  44.     /**
  45.      * 获取汉字串拼音,英文字符不变
  46.      *
  47.      * @param chinese 汉字串
  48.      * @return 汉语拼音
  49.      */
  50.     public static List cn2Spell(String chinese) {
  51.         List list =new ArrayList();
  52.      if(chinese==null || chinese.equals("")){
  53.      return list;
  54.      }else{
  55.             char[] arr = chinese.toCharArray();
  56.             HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  57.             defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  58.             defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  59.             for (int i = 0; i < arr.length; i++) {
  60.                     if (arr[i] > 128) {
  61.                             try {
  62.                                  String[] str=PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
  63.                                  if(str==null || str.length==0){
  64.                                   break;
  65.                                  }
  66.                                     list.add(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
  67.                             } catch (BadHanyuPinyinOutputFormatCombination e) {
  68.                              break;
  69.                             }
  70.                     } else {
  71.                             list.add(arr[i]);
  72.                     }
  73.             }
  74.             return list;
  75.      }     
  76.     }
  77.      

  78. }
复制代码


ZiDian.java
  1. package com.zidian;

  2. import net.sourceforge.pinyin4j.PinyinHelper;
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  6. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

  7. import java.io.BufferedReader;
  8. import java.io.File;
  9. import java.io.FileNotFoundException;
  10. import java.io.FileOutputStream;
  11. import java.io.FileReader;
  12. import java.io.IOException;
  13. import java.io.ObjectInputStream;
  14. import java.io.PrintWriter;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. import java.util.Map;

  18. import javax.naming.spi.DirStateFactory.Result;
  19. /**
  20. * 拼音工具
  21. *
  22. * @author ceo@tom.com
  23. */
  24. public class ZiDian {
  25.       
  26.   static HuoQuPinYin obj=new HuoQuPinYin();

  27.    
  28.      public static void main(String[] args) throws Exception {
  29.       
  30.        FileReader fr = new FileReader(System.getProperty("user.dir")+"\\name.txt");
  31.         BufferedReader buf = new BufferedReader(fr);
  32.         String str = "";
  33.         PrintWriter pw = null;
  34.       FileOutputStream fos = new FileOutputStream(System.getProperty("user.dir")+"\\Result.txt");
  35.       pw = new PrintWriter(fos);
  36.         while((str = buf.readLine()) != null){
  37.           System.out.println(str);
  38.           pw.println(geshi1(str));
  39.           pw.println(geshi2(str));
  40.           pw.println(geshi3(str));
  41.           pw.println(geshi4(str));
  42.           pw.println(geshi5(str));
  43.           pw.println(geshi6(str));
  44.           pw.println(geshi7(str));
  45.           pw.println(geshi8(str));
  46.         }
  47.         pw.close();
  48.         System.out.println("完成");
  49.       
  50.      }
  51.      
  52.      

  53.      
  54.      //wangdachui
  55.      public static String geshi1(String str){
  56.         List qplist=obj.cn2Spell(str);
  57.         String tempstr="";
  58.         StringBuffer sb=new StringBuffer();
  59.         for (int i = 0; i < qplist.size(); i++) {
  60.           sb.append(qplist.get(i));
  61.       }
  62.     return sb.toString();
  63.      }
  64.      
  65.      //wdc
  66.      public static String geshi2(String str){
  67.        List list=obj.cn2FirstSpell(str);
  68.     String tempstr="";
  69.     StringBuffer sb=new StringBuffer();
  70.     for (int i = 0; i < list.size(); i++) {
  71.       sb.append(list.get(i));
  72.       }
  73.     return sb.toString();
  74.      }
  75.      
  76.      //wangdac
  77.      public static String geshi3(String str){
  78.        List qplist=obj.cn2Spell(str);
  79.        List szmlist=obj.cn2FirstSpell(str);
  80.        StringBuffer sb=new StringBuffer();
  81.        for (int i = 1; i < szmlist.size(); i++) {
  82.         sb.append(szmlist.get(i));
  83.       }
  84.     return qplist.get(0)+sb.toString();
  85.      }
  86.      
  87.     //wdachui
  88.      public static String geshi4(String str){
  89.        List qplist=obj.cn2Spell(str);
  90.        List szmlist=obj.cn2FirstSpell(str);
  91.        StringBuffer sb=new StringBuffer();
  92.        for (int i = 1; i < qplist.size(); i++) {
  93.          sb.append(qplist.get(i));
  94.         }
  95.     return szmlist.get(0)+sb.toString();
  96.      }
  97.      
  98.      //wang.dachui
  99.      public static String geshi5(String str){
  100.        List qplist=obj.cn2Spell(str);
  101.     String tempstr="";
  102.     StringBuffer sb=new StringBuffer();
  103.     for (int i = 1; i < qplist.size(); i++) {
  104.       sb.append(qplist.get(i));
  105.       }
  106.     return qplist.get(0)+"."+sb.toString();
  107.      }
  108.      
  109.      //dachui.wang
  110.      public static String geshi6(String str){
  111.        List qplist=obj.cn2Spell(str);
  112.       String tempstr="";
  113.       StringBuffer sb=new StringBuffer();
  114.       for (int i = 1; i < qplist.size(); i++) {
  115.         sb.append(qplist.get(i));
  116.       }
  117.     return sb.toString()+"."+qplist.get(0);
  118.      }
  119.      
  120.      //dc.wang
  121.      public static String geshi7(String str){
  122.        List qplist=obj.cn2Spell(str);
  123.       List szmlist=obj.cn2FirstSpell(str);
  124.        String tempstr="";
  125.        StringBuffer sb=new StringBuffer();
  126.        for (int i = 1; i < szmlist.size(); i++) {
  127.          sb.append(szmlist.get(i));
  128.         }
  129.       return sb.toString()+"."+qplist.get(0);
  130.      }
  131.      
  132.      //wang.dc
  133.      public static String geshi8(String str){
  134.        List qplist=obj.cn2Spell(str);
  135.        List szmlist=obj.cn2FirstSpell(str);
  136.         String tempstr="";
  137.         StringBuffer sb=new StringBuffer();
  138.         for (int i = 1; i < szmlist.size(); i++) {
  139.           sb.append(szmlist.get(i));
  140.          }
  141.        return qplist.get(0)+"."+sb.toString();
  142.      }
  143. }
复制代码
项目附带jar包下载地址:
链接:http://share.weiyun.com/47540cd8f24ca6eca3a75709866f0c3d (密码:SXNX)


过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表