您的位置:首页 > 其它

汉字拼音转换类库的使用

2015-09-30 10:33 323 查看
效果图:



算法参考:

笛卡尔积

列出姓名(字符串)所有拼音组合示例

private void txtHanzi_TextChanged(object sender, EventArgs e)
{
lstPinyin.Items.Clear();
string input = txtHanzi.Text.Trim();
List<List<string>> list = GetPinyin(input);
if (list.Count==0)
{
return;
}
List<string> res = list[0];
for (int i = 1; i < list.Count; i++)
{
res = GetDecart(res, list[i]);
}
lblCount.Text = res.Count + "个";
for (int i = 0; i < res.Count; i++)
{
lstPinyin.Items.Add(res[i]);
}
}


private List<string> GetChPinyin(char c)
{
ChineseChar ch = new ChineseChar(c);
List<string> list = new List<string>();
for (int i = 0; i < ch.Pinyins.Count; i++)
{
string temp = ch.Pinyins[i];
if (temp==null)
{
continue;
}
temp = temp.Substring(0, temp.Length - 1);
if (!list.Contains(temp))
{
list.Add(temp);
}
}
return list;
}


private List<List<string>> GetPinyin(string s)
{
List<List<string>> list = new List<List<string>>();
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
list.Add(GetChPinyin(c));
}
return list;
}


private List<string> GetDecart(List<string> l1, List<string> l2)
{
List<string> list = new List<string>();
for (int i = 0; i < l1.Count; i++)
{
for (int j = 0; j < l2.Count; j++)
{
list.Add(l1[i] + " " + l2[j]);
}
}
return list;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: