姓名转拼音

项目中遇到为用户分配用户名,规则是若姓名为两个字,则用全拼表示,若姓名为三个字,则用姓全拼,名的首字母表示;如“张三”对应用户名就是“zhangsan”,“李小四”对应用户名就是“lixs”,本来打算用Excel的宏命令实现,可是对特殊字,生僻字的转化不太理想;于是引用了java的pinyin4j来实现。
考虑到用户名的唯一性,在用户名相同时依次在用户名后加数字,如用户名为“zhangsan”的出现了不止一次,则分别用"zhangsan","zhangsan1","zhangsan2"......
引入pinyin4j-1.1.0.jar
代码如下:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;

/**
 * 汉字转拼音工具类 基于 pinyin4j
 */
public class PinyinUtil {

	private static PinyinUtil instance;

	public static PinyinUtil getInstance() {
		if (instance == null) {
			instance = new PinyinUtil();
		}
		return instance;
	}

	private HanyuPinyinOutputFormat outputFormat = null;

	private HanyuPinyinOutputFormat getOutputFormat() {
		if (outputFormat == null) {
			outputFormat = new HanyuPinyinOutputFormat();
			outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
			outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		}
		return outputFormat;
	}

	//获取字符串中所有字符首字母
	public String getStringInitial(String str) {
		StringBuffer sbf = new StringBuffer();
		if (str != null) {
			for (int i = 0; i < str.length(); i++) {
				sbf.append(getCharInitial(str.charAt(i)));
			}
		}
		return sbf.toString();
	}

	 //获取中文字符首字母
	public String getCharInitial(char c) {
		try {
			String[] strs = PinyinHelper.toHanyuPinyinStringArray(c,
					getOutputFormat());
			String initial = "";
			if (strs != null && strs.length > 0) {
				String str = strs[0];
				if (str != null && str.length() > 0) {
					initial += str.charAt(0);
				}
			}
			return initial;
		} catch (Exception ex) {
			ex.printStackTrace();
			return c + "";
		}
	}
	
	 //获取中文字符串全拼
	public String getStringPinyin(String chines) {
		char[] nameChar = chines.toCharArray();
		String pinyinStr = "";
		for (int i = 0; i < nameChar.length; i++) {
			try {
				char cha = nameChar[i];
				if (nameChar[i] > 128) {
					pinyinStr += PinyinHelper.toHanyuPinyinStringArray(cha,
							getOutputFormat())[0];
				}
			} catch (Exception ex) {
				ex.printStackTrace();
				pinyinStr += nameChar[i];
			}
		}
		return pinyinStr;
	}

	public static void main(String[] args) {
		FileInputStream fis = null;
		InputStreamReader isr = null;
		BufferedReader br = null;
		try {
			String str = "";
			fis = new FileInputStream("resource/username.txt");// FileInputStream


			// 从文件系统中的某个文件中获取字节
			isr = new InputStreamReader(fis);// InputStreamReader 是字节流通向字符流的桥梁,
			br = new BufferedReader(isr);// 从字符输入流中读取文件中的内容
			int index = 0;
			List<String> nameList = new ArrayList<String>();


			while ((str = br.readLine()) != null) {
				String tmp = "";
				if (str.length() == 2) {
					tmp = PinyinUtil.getInstance().getStringPinyin(str);
				} else if (str.length() == 3) {
					tmp = PinyinUtil.getInstance().getStringPinyin(
							str.substring(0, 1));
					tmp += PinyinUtil.getInstance().getStringInitial(
							str.substring(1, 3));
				}
				index++;
				if (nameList.contains(tmp)
						&& Collections.frequency(nameList, tmp) >= 1) {
					System.out.println(tmp
							+ Collections.frequency(nameList, tmp));
					nameList.add(tmp);
				} else {
					nameList.add(tmp);
					System.out.println(tmp);
				}
			}
		} catch (FileNotFoundException e) {
			System.out.println("找不到指定文件");
		} catch (IOException e) {
			System.out.println("读取文件失败");
		} finally {
			try {
				br.close();
				isr.close();
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

输入:,输出:


### 回答1: WPS姓名拼音BAS是一种用于WPS文字处理软件的拓展插件,它可以将中文姓名换成对应的拼音。这个插件主要用于方便用户在办公文档中进行中英文姓名的对照和搜索。 WPS姓名拼音BAS的下载方式如下:首先,打开WPS官方网站,进入软件下载页面。在搜索框中输入“WPS姓名拼音BAS”,然后点击搜索。在搜索结果中找到相应的插件下载页面,点击下载按钮即可。 下载完成后,双击安装文件进行安装。安装完成后,打开WPS文字处理软件,在菜单栏中找到“插件”选项,点击进入插件管理界面。在插件管理界面中,可以看到已安装的插件列表,找到“姓名拼音”插件,并确保该插件已启用。 使用WPS姓名拼音BAS插件非常简便。在编辑文档时,选中需要拼音中文姓名,然后在菜单栏的“插件”选项中找到“姓名拼音”插件,点击即可完成拼音换。换完成后,拼音结果会自动显示在文档中,方便用户对照和搜索。 总之,WPS姓名拼音BAS是一款实用的插件工具,可以帮助用户在WPS文字处理软件中快速将中文姓名换为拼音。通过以上的下载和使用方法,用户可以方便地获得并使用这个插件。 ### 回答2: WPS 姓名拼音 BAS 是指 WPS Office 软件中的一款功能,用于将姓名换为对应的拼音。可以通过在 WPS Office 的官方网站或其他下载平台上找到并下载。下载 WPS 姓名拼音 BAS 的方法如下: 1. 打开 WPS Office 的官方网站,进入下载页面。 2. 在下载页面中,寻找与你的操作系统相匹配的软件版本。WPS Office 支持多种操作系统,包括Windows、Mac、Linux等。 3. 确认选择正确的软件版本后,点击下载按钮开始下载。 4. 下载完成后,双击下载的安装包文件,按照提示进行安装。 5. 安装完成后,打开 WPS Office 软件。 6. 在 WPS Office 的功能栏中,找到“插件”或“扩展”选项,点击进入插件管理界面。 7. 在插件管理界面中,搜索“姓名拼音 BAS”插件。 8. 找到插件后,点击“安装”或“添加”按钮,将插件添加到 WPS Office 中。 9. 安装完成后,可以在 WPS Office 的功能栏中找到“姓名拼音 BAS”的图标或菜单选项。 10. 点击“姓名拼音 BAS”的图标或菜单选项,即可打开使用该功能。 通过以上步骤,你就可以成功下载并使用 WPS 姓名拼音 BAS 功能啦! ### 回答3: WPS姓名拼音BASE是一款实用的工具软件,旨在帮助用户将姓名换为拼音。WPS是一家国内知名的办公软件公司,其产品多样化且功能强大,得到了广大用户的信赖和喜爱。 WPS姓名拼音BASE的下载非常简便,只需按照以下步骤进行操作即可。首先,我们可以通过浏览器打开WPS官方网站,找到软件下载页面。在搜索栏中输入“WPS姓名拼音BASE”,点击搜索按钮即可找到相关的下载页面。根据自己的操作系统选择合适的软件版本,然后点击下载按钮开始下载。 下载完成后,找到下载的安装包文件,双击打开开始安装。根据安装向导的提示,按照步骤逐步进行安装。一般来说,安装过程非常简单,并且会自动创建桌面快捷方式,方便用户使用。 安装完成后,我们可以在桌面或者开始菜单中找到WPS姓名拼音BASE的图标。双击打开软件,进入操作界面。 在操作界面中,我们可以看到姓名拼音的主要功能选项。在左侧的输入框中输入需要换为拼音姓名,然后点击“换”按钮即可快速将姓名换为对应的拼音。 总的来说,WPS姓名拼音BASE的下载和操作都非常简单。它的功能强大,可以帮助我们快速将中文姓名换为拼音,提高工作效率。无论是个人用户还是企业用户,都可以通过下载和使用该软件来方便地进行姓名拼音换。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值