我们在做信息管理系统时经常要设置一些固定项目的拼音输入方法,在做拼音输入参数设置时又要获取汉字的声母,过去我们经常采用的方式就是把所有可能的字符提前放入数据库中,使用时查找调用,但是这种方式非常的麻烦和笨拙而且速度慢,今天突然找出一个比较好的获取声母的方式,简单、快捷。
完整代码如下:
'获取字符的声母字符串
Public Function Spells(ByVal Word As String) As String
Dim txt As String = ""
Dim mm As Integer
Word = Trim(Word)
For mm = 1 To Len(Word)
txt &= SpellHead(Mid(Word, mm, 1))
Next
Return txt
End Function
Private Function SpellHead(ByVal Word As Char) As Char
Dim txt As Char
'汉字
If Asc(Word) < 0 Then
Select Case Asc(Word)
Case Is < Asc("啊")
txt = ""
Case Asc("啊") To Asc("芭") - 1
txt = "A"
Case Asc("芭") To Asc("擦") - 1
txt = "B"
Case Asc("擦") To Asc("搭") - 1
txt = "C"
Case Asc("搭") To Asc("蛾") - 1
txt = "D"
Case Asc("蛾") To Asc("发") - 1
txt = "E"
Case Asc("发") To Asc("噶") - 1
txt = "F"
Case Asc("噶") To Asc("哈") - 1
txt = "G"
Case Asc("哈") To Asc("击") - 1
txt = "H"
Case Asc("击") To Asc("喀") - 1
txt = "J"
Case Asc("喀") To Asc("垃") - 1
txt = "K"
Case Asc("垃") To Asc("妈") - 1
txt = "L"
Case Asc("妈") To Asc("拿") - 1
txt = "M"
Case Asc("拿") To Asc("哦") - 1
txt = "N"
Case Asc("哦") To Asc("啪") - 1
txt = "O"
Case Asc("啪") To Asc("期") - 1
txt = "P"
Case Asc("期") To Asc("然") - 1
txt = "Q"
Case Asc("然") To Asc("撒") - 1
txt = "R"
Case Asc("撒") To Asc("塌") - 1
txt = "S"
Case Asc("塌") To Asc("挖") - 1
txt = "T"
Case Asc("挖") To Asc("昔") - 1
txt = "W"
Case Asc("昔") To Asc("压") - 1
txt = "X"
Case Asc("压") To Asc("匝") - 1
txt = "Y"
Case Is >= Asc("匝")
txt = "Z"
End Select
Else
'英文字
If UCase(Word) <= "Z" And UCase(Word) >= "A" Then
txt = UCase(Word)
Else
txt = ""
End If
End If
Return txt
End Function
以上代码在VB2005环境中顺利通过,使用时只要调用Spells这个函数就可以直接返回声母字符串了!
eg:
调用Spells("中华人民共和国abcd"),返回结果为:"ZHRMGHGABCD"