如何获取中文的拼音字母

liul17 2003-09-29 02:54:54
如有中文“中国”
返回
1. "zhong guo" '中间要有空格(即:能分辨出是哪个字的)
2. "z g"

...全文
300 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xo2000 2003-09-30
  • 打赏
  • 举报
回复
学习
wx05 2003-09-30
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim Str As String, TempStr As String
Dim i As Integer
Str = Text1.Text
TempStr = ""
length = Len(Str)
For i = 1 To length
Select Case Asc(Str)
Case &HB0A1 To &HB0C4: ch = "a"
Case &HB0C5 To &HB2C0: ch = "b"
Case &HB2C1 To &HB4ED: ch = "c"
Case &HB4EE To &HB6E9: ch = "d"
Case &HB6EA To &HB7A1: ch = "e"
Case &HB7A2 To &HB8C0: ch = "f"
Case &HB8C1 To &HB9FD: ch = "g"
Case &HB9FE To &HBBF6: ch = "h"
Case &HBBF7 To &HBFA5: ch = "j"
Case &HBFA6 To &HC0AB: ch = "k"
Case &HC0AC To &HC2E7: ch = "l"
Case &HC2E8 To &HC4C2: ch = "m"
Case &HC4C3 To &HC5B5: ch = "n"
Case &HC5B6 To &HC5BD: ch = "o"
Case &HC5BE To &HC6D9: ch = "p"
Case &HC6DA To &HC8BA: ch = "q"
Case &HC8BB To &HC8F5: ch = "r"
Case &HC8F6 To &HCBF9: ch = "s"
Case &HCBFA To &HCDD9: ch = "t"
Case &HCDDA To &HCEF3: ch = "w"
Case &HCEF4 To &HD188: ch = "x"
Case &HD1B9 To &HD4D0: ch = "y"
Case &HD4D1 To &HD7F9: ch = "z"
Case Else
ch = Left(Str, 1)
End Select
TempStr = TempStr + ch
Str = Mid(Str, 2, Len(Str))
Next
Text2.Text = TempStr
End Sub

flxa 2003-09-30
  • 打赏
  • 举报
回复
拼音对照表的产生可以用“输入法生成器”,从全拼输入法中反出码文件来!这样就能取出每个汉字的拼音码了,

这个不难处理,比较难处理的是多音字的处理。可能要和语义、词组等一起处理,比较复杂!!
liul17 2003-09-30
  • 打赏
  • 举报
回复
哪里有对照表??
lwm1977 2003-09-29
  • 打赏
  • 举报
回复
汉字就是复杂
northwolves 2003-09-29
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
MsgBox pinyin("不到黄河心不死!")
End Sub
Function pinyin(ByVal x As String) As String
On Error Resume Next
Const hanzi = "啊芭擦搭蛾发噶哈击喀垃妈拿哦啪期然撒塌挖昔压匝座ABCDEFGHJKLMNOPQRSTWXYZZ"
pinyin = ""
Dim temp As String, i As Long, j As Long
i = 1
Do While i <= Len(x)
If Mid(x, i, 1) = "座" Then temp = "Z"
If InStr(",。“”;:?》《!·¥()", Mid(x, i, 1)) > 0 Then temp = ""
For j = 1 To 23
If Asc(Mid(x, i, 1)) >= Asc(Mid(hanzi, j, 1)) And Asc(Mid(x, i, 1)) < Asc(Mid(hanzi, j + 1, 1)) Then temp = Mid(hanzi, 24 + j, 1)
Next
pinyin = pinyin & " " & temp
i = i + 1
temp = ""
Loop
pinyin = LCase(pinyin)
End Function
lxqlogo0 2003-09-29
  • 打赏
  • 举报
回复
以上代码返回完整的拼音。如:“中国” 返回 "zhong guo"
脆皮大雪糕 2003-09-29
  • 打赏
  • 举报
回复
如果要返回完整的拼音可能只能查对照表了,什么地方需要返回产生完整的拼音?
lxqlogo0 2003-09-29
  • 打赏
  • 举报
回复
d.Add "pie", "-14670"
d.Add "pin", "-14668"
d.Add "ping", "-14663"
d.Add "po", "-14654"
d.Add "pu", "-14645"
d.Add "qi", "-14630"
d.Add "qia", "-14594"
d.Add "qian", "-14429"
d.Add "qiang", "-14407"
d.Add "qiao", "-14399"
d.Add "qie", "-14384"
d.Add "qin", "-14379"
d.Add "qing", "-14368"
d.Add "qiong", "-14355"
d.Add "qiu", "-14353"
d.Add "qu", "-14345"
d.Add "quan", "-14170"
d.Add "que", "-14159"
d.Add "qun", "-14151"
d.Add "ran", "-14149"
d.Add "rang", "-14145"
d.Add "rao", "-14140"
d.Add "re", "-14137"
d.Add "ren", "-14135"
d.Add "reng", "-14125"
d.Add "ri", "-14123"
d.Add "rong", "-14122"
d.Add "rou", "-14112"
d.Add "ru", "-14109"
d.Add "ruan", "-14099"
d.Add "rui", "-14097"
d.Add "run", "-14094"
d.Add "ruo", "-14092"
d.Add "sa", "-14090"
d.Add "sai", "-14087"
d.Add "san", "-14083"
d.Add "sang", "-13917"
d.Add "sao", "-13914"
d.Add "se", "-13910"
d.Add "sen", "-13907"
d.Add "seng", "-13906"
d.Add "sha", "-13905"
d.Add "shai", "-13896"
d.Add "shan", "-13894"
d.Add "shang", "-13878"
d.Add "shao", "-13870"
d.Add "she", "-13859"
d.Add "shen", "-13847"
d.Add "sheng", "-13831"
d.Add "shi", "-13658"
d.Add "shou", "-13611"
d.Add "shu", "-13601"
d.Add "shua", "-13406"
d.Add "shuai", "-13404"
d.Add "shuan", "-13400"
d.Add "shuang", "-13398"
d.Add "shui", "-13395"
d.Add "shun", "-13391"
d.Add "shuo", "-13387"
d.Add "si", "-13383"
d.Add "song", "-13367"
d.Add "sou", "-13359"
d.Add "su", "-13356"
d.Add "suan", "-13343"
d.Add "sui", "-13340"
d.Add "sun", "-13329"
d.Add "suo", "-13326"
d.Add "ta", "-13318"
d.Add "tai", "-13147"
d.Add "tan", "-13138"
d.Add "tang", "-13120"
d.Add "tao", "-13107"
d.Add "te", "-13096"
d.Add "teng", "-13095"
d.Add "ti", "-13091"
d.Add "tian", "-13076"
d.Add "tiao", "-13068"
d.Add "tie", "-13063"
d.Add "ting", "-13060"
d.Add "tong", "-12888"
d.Add "tou", "-12875"
d.Add "tu", "-12871"
d.Add "tuan", "-12860"
d.Add "tui", "-12858"
d.Add "tun", "-12852"
d.Add "tuo", "-12849"
d.Add "wa", "-12838"
d.Add "wai", "-12831"
d.Add "wan", "-12829"
d.Add "wang", "-12812"
d.Add "wei", "-12802"
d.Add "wen", "-12607"
d.Add "weng", "-12597"
d.Add "wo", "-12594"
d.Add "wu", "-12585"
d.Add "xi", "-12556"
d.Add "xia", "-12359"
d.Add "xian", "-12346"
d.Add "xiang", "-12320"
d.Add "xiao", "-12300"
d.Add "xie", "-12120"
d.Add "xin", "-12099"
d.Add "xing", "-12089"
d.Add "xiong", "-12074"
d.Add "xiu", "-12067"
d.Add "xu", "-12058"
d.Add "xuan", "-12039"
d.Add "xue", "-11867"
d.Add "xun", "-11861"
d.Add "ya", "-11847"
d.Add "yan", "-11831"
d.Add "yang", "-11798"
d.Add "yao", "-11781"
d.Add "ye", "-11604"
d.Add "yi", "-11589"
d.Add "yin", "-11536"
d.Add "ying", "-11358"
d.Add "yo", "-11340"
d.Add "yong", "-11339"
d.Add "you", "-11324"
d.Add "yu", "-11303"
d.Add "yuan", "-11097"
d.Add "yue", "-11077"
d.Add "yun", "-11067"
d.Add "za", "-11055"
d.Add "zai", "-11052"
d.Add "zan", "-11045"
d.Add "zang", "-11041"
d.Add "zao", "-11038"
d.Add "ze", "-11024"
d.Add "zei", "-11020"
d.Add "zen", "-11019"
d.Add "zeng", "-11018"
d.Add "zha", "-11014"
d.Add "zhai", "-10838"
d.Add "zhan", "-10832"
d.Add "zhang", "-10815"
d.Add "zhao", "-10800"
d.Add "zhe", "-10790"
d.Add "zhen", "-10780"
d.Add "zheng", "-10764"
d.Add "zhi", "-10587"
d.Add "zhong", "-10544"
d.Add "zhou", "-10533"
d.Add "zhu", "-10519"
d.Add "zhua", "-10331"
d.Add "zhuai", "-10329"
d.Add "zhuan", "-10328"
d.Add "zhuang", "-10322"
d.Add "zhui", "-10315"
d.Add "zhun", "-10309"
d.Add "zhuo", "-10307"
d.Add "zi", "-10296"
d.Add "zong", "-10281"
d.Add "zou", "-10274"
d.Add "zu", "-10270"
d.Add "zuan", "-10262"
d.Add "zui", "-10260"
d.Add "zun", "-10256"
d.Add "zuo", "-10254"
End Sub
Private Function getmutipinyin(str As String) As String
Dim strtemp As String, i As Long
strtemp = ""
For i = 1 To Len(str)
strtemp = strtemp & getsinglepinyin(Asc(Mid(str, i, 1)))
Next
getmutipinyin = strtemp
End Function

Private Sub Command1_Click()
Dim stemp As String
stemp = Text1.Text
Text2.Text = getmutipinyin(stemp)

End Sub

Private Sub Form_Load()

Call createDictionary
End Sub

Private Sub Form_Unload(Cancel As Integer)
Set d = Nothing
End Sub

lxqlogo0 2003-09-29
  • 打赏
  • 举报
回复
'注意引用Microsoft Scripting Runtime
'对多音字的处理没有加入
Option Explicit
Dim d As New Dictionary
Private Function getsinglepinyin(num As Long) As String
On Error GoTo myerr
If num > 0 And num < 160 Then
getsinglepinyin = Chr(num)
ElseIf num < -20319 Or num > -10247 Then
getsinglepinyin = ""
Else
Dim a(), b(), i As Long
a = d.Items
b = d.Keys
For i = d.Count - 1 To 0 Step -1
If CLng(a(i)) <= num Then Exit For
Next
getsinglepinyin = b(i) + " "
End If
Exit Function
myerr:
MsgBox "对不起,词典中没有您输入的汉字,如有需要,请联系作者"
End Function
Private Sub createDictionary()
d.Add "a", "-20319"
d.Add "ai", "-20317"
d.Add "an", "-20304"
d.Add "ang", "-20295"
d.Add "ao", "-20292"
d.Add "ba", "-20283"
d.Add "bai", "-20265"
d.Add "ban", "-20257"
d.Add "bang", "-20242"
d.Add "bao", "-20230"
d.Add "bei", "-20051"
d.Add "ben", "-20036"
d.Add "beng", "-20032"
d.Add "bi", "-20026"
d.Add "bian", "-20002"
d.Add "biao", "-19990"
d.Add "bie", "-19986"
d.Add "bin", "-19982"
d.Add "bing", "-19976"
d.Add "bo", "-19805"
d.Add "bu", "-19784"
d.Add "ca", "-19775"
d.Add "cai", "-19774"
d.Add "can", "-19763"
d.Add "cang", "-19756"
d.Add "cao", "-19751"
d.Add "ce", "-19746"
d.Add "ceng", "-19741"
d.Add "cha", "-19739"
d.Add "chai", "-19728"
d.Add "chan", "-19725"
d.Add "chang", "-19715"
d.Add "chao", "-19540"
d.Add "che", "-19531"
d.Add "chen", "-19525"
d.Add "cheng", "-19515"
d.Add "chi", "-19500"
d.Add "chong", "-19484"
d.Add "chou", "-19479"
d.Add "chu", "-19467"
d.Add "chuai", "-19289"
d.Add "chuan", "-19288"
d.Add "chuang", "-19281"
d.Add "chui", "-19275"
d.Add "chun", "-19270"
d.Add "chuo", "-19263"
d.Add "ci", "-19261"
d.Add "cong", "-19249"
d.Add "cou", "-19243"
d.Add "cu", "-19242"
d.Add "cuan", "-19238"
d.Add "cui", "-19235"
d.Add "cun", "-19227"
d.Add "cuo", "-19224"
d.Add "da", "-19218"
d.Add "dai", "-19212"
d.Add "dan", "-19038"
d.Add "dang", "-19023"
d.Add "dao", "-19018"
d.Add "de", "-19006"
d.Add "deng", "-19003"
d.Add "di", "-18996"
d.Add "dian", "-18977"
d.Add "diao", "-18961"
d.Add "die", "-18952"
d.Add "ding", "-18783"
d.Add "diu", "-18774"
d.Add "dong", "-18773"
d.Add "dou", "-18763"
d.Add "du", "-18756"
d.Add "duan", "-18741"
d.Add "dui", "-18735"
d.Add "dun", "-18731"
d.Add "duo", "-18722"
d.Add "e", "-18710"
d.Add "en", "-18697"
d.Add "er", "-18696"
d.Add "fa", "-18526"
d.Add "fan", "-18518"
d.Add "fang", "-18501"
d.Add "fei", "-18490"
d.Add "fen", "-18478"
d.Add "feng", "-18463"
d.Add "fo", "-18448"
d.Add "fou", "-18447"
d.Add "fu", "-18446"
d.Add "ga", "-18239"
d.Add "gai", "-18237"
d.Add "gan", "-18231"
d.Add "gang", "-18220"
d.Add "gao", "-18211"
d.Add "ge", "-18201"
d.Add "gei", "-18184"
d.Add "gen", "-18183"
d.Add "geng", "-18181"
d.Add "gong", "-18012"
d.Add "gou", "-17997"
d.Add "gu", "-17988"
d.Add "gua", "-17970"
d.Add "guai", "-17964"
d.Add "guan", "-17961"
d.Add "guang", "-17950"
d.Add "gui", "-17947"
d.Add "gun", "-17931"
d.Add "guo", "-17928"
d.Add "ha", "-17922"
d.Add "hai", "-17759"
d.Add "han", "-17752"
d.Add "hang", "-17733"
d.Add "hao", "-17730"
d.Add "he", "-17721"
d.Add "hei", "-17703"
d.Add "hen", "-17701"
d.Add "heng", "-17697"
d.Add "hong", "-17692"
d.Add "hou", "-17683"
d.Add "hu", "-17676"
d.Add "hua", "-17496"
d.Add "huai", "-17487"
d.Add "huan", "-17482"
d.Add "huang", "-17468"
d.Add "hui", "-17454"
d.Add "hun", "-17433"
d.Add "huo", "-17427"
d.Add "ji", "-17417"
d.Add "jia", "-17202"
d.Add "jian", "-17185"
d.Add "jiang", "-16983"
d.Add "jiao", "-16970"
d.Add "jie", "-16942"
d.Add "jin", "-16915"
d.Add "jing", "-16733"
d.Add "jiong", "-16708"
d.Add "jiu", "-16706"
d.Add "ju", "-16689"
d.Add "juan", "-16664"
d.Add "jue", "-16657"
d.Add "jun", "-16647"
d.Add "ka", "-16474"
d.Add "kai", "-16470"
d.Add "kan", "-16465"
d.Add "kang", "-16459"
d.Add "kao", "-16452"
d.Add "ke", "-16448"
d.Add "ken", "-16433"
d.Add "keng", "-16429"
d.Add "kong", "-16427"
d.Add "kou", "-16423"
d.Add "ku", "-16419"
d.Add "kua", "-16412"
d.Add "kuai", "-16407"
d.Add "kuan", "-16403"
d.Add "kuang", "-16401"
d.Add "kui", "-16393"
d.Add "kun", "-16220"
d.Add "kuo", "-16216"
d.Add "la", "-16212"
d.Add "lai", "-16205"
d.Add "lan", "-16202"
d.Add "lang", "-16187"
d.Add "lao", "-16180"
d.Add "le", "-16171"
d.Add "lei", "-16169"
d.Add "leng", "-16158"
d.Add "li", "-16155"
d.Add "lia", "-15959"
d.Add "lian", "-15958"
d.Add "liang", "-15944"
d.Add "liao", "-15933"
d.Add "lie", "-15920"
d.Add "lin", "-15915"
d.Add "ling", "-15903"
d.Add "liu", "-15889"
d.Add "long", "-15878"
d.Add "lou", "-15707"
d.Add "lu", "-15701"
d.Add "lv", "-15681"
d.Add "luan", "-15667"
d.Add "lue", "-15661"
d.Add "lun", "-15659"
d.Add "luo", "-15652"
d.Add "ma", "-15640"
d.Add "mai", "-15631"
d.Add "man", "-15625"
d.Add "mang", "-15454"
d.Add "mao", "-15448"
d.Add "me", "-15436"
d.Add "mei", "-15435"
d.Add "men", "-15419"
d.Add "meng", "-15416"
d.Add "mi", "-15408"
d.Add "mian", "-15394"
d.Add "miao", "-15385"
d.Add "mie", "-15377"
d.Add "min", "-15375"
d.Add "ming", "-15369"
d.Add "miu", "-15363"
d.Add "mo", "-15362"
d.Add "mou", "-15183"
d.Add "mu", "-15180"
d.Add "na", "-15165"
d.Add "nai", "-15158"
d.Add "nan", "-15153"
d.Add "nang", "-15150"
d.Add "nao", "-15149"
d.Add "ne", "-15144"
d.Add "nei", "-15143"
d.Add "nen", "-15141"
d.Add "neng", "-15140"
d.Add "ni", "-15139"
d.Add "nian", "-15128"
d.Add "niang", "-15121"
d.Add "niao", "-15119"
d.Add "nie", "-15117"
d.Add "nin", "-15110"
d.Add "ning", "-15109"
d.Add "niu", "-14941"
d.Add "nong", "-14937"
d.Add "nu", "-14933"
d.Add "nv", "-14930"
d.Add "nuan", "-14929"
d.Add "nue", "-14928"
d.Add "nuo", "-14926"
d.Add "o", "-14922"
d.Add "ou", "-14921"
d.Add "pa", "-14914"
d.Add "pai", "-14908"
d.Add "pan", "-14902"
d.Add "pang", "-14894"
d.Add "pao", "-14889"
d.Add "pei", "-14882"
d.Add "pen", "-14873"
d.Add "peng", "-14871"
d.Add "pi", "-14857"
d.Add "pian", "-14678"
d.Add "piao", "-14674"
接下页
脆皮大雪糕 2003-09-29
  • 打赏
  • 举报
回复
同意楼上,汉字内码本来就是根据拼音排序的
liul17 2003-09-29
  • 打赏
  • 举报
回复
那么如果是:
“中国” 返回 "zhong guo" 呢?

还有关于这些"啊" "芭" "擦" "搭" ... 哪些资料上有介绍?(原理是什么)
射天狼 2003-09-29
  • 打赏
  • 举报
回复
Option Explicit

'在窗口中加两个TEXT控件,一个输入中文,一个显示英文
Private Sub Form_Load()
Text1.Text = "我是中国人"
End Sub

Private Sub Command1_Click()
Text2.Text = GetPY(Text1.Text)
End Sub

'获得输入名称的首字拼音
Private Function GetPY(ByVal strParmeter As String) As String
Dim intTmp As String, i As Long

For i = 1 To Len(strParmeter)
intTmp = Asc(Mid(strParmeter, i, 1))

If intTmp < Asc("啊") Then
GetPY = GetPY & "*"
ElseIf intTmp >= Asc("啊") And intTmp < Asc("芭") Then
GetPY = GetPY & "A"
ElseIf intTmp >= Asc("芭") And intTmp < Asc("擦") Then
GetPY = GetPY & "B"
ElseIf intTmp >= Asc("擦") And intTmp < Asc("搭") Then
GetPY = GetPY & "C"
ElseIf intTmp >= Asc("搭") And intTmp < Asc("蛾") Then
GetPY = GetPY & "D"
ElseIf intTmp >= Asc("蛾") And intTmp < Asc("发") Then
GetPY = GetPY & "E"
ElseIf intTmp >= Asc("发") And intTmp < Asc("噶") Then
GetPY = GetPY & "F"
ElseIf intTmp >= Asc("噶") And intTmp < Asc("哈") Then
GetPY = GetPY & "G"
ElseIf intTmp >= Asc("哈") And intTmp < Asc("击") Then
GetPY = GetPY & "H"
ElseIf intTmp >= Asc("击") And intTmp < Asc("喀") Then
GetPY = GetPY & "J"
ElseIf intTmp >= Asc("喀") And intTmp < Asc("垃") Then
GetPY = GetPY & "K"
ElseIf intTmp >= Asc("垃") And intTmp < Asc("妈") Then
GetPY = GetPY & "L"
ElseIf intTmp >= Asc("妈") And intTmp < Asc("拿") Then
GetPY = GetPY & "M"
ElseIf intTmp >= Asc("拿") And intTmp < Asc("哦") Then
GetPY = GetPY & "N"
ElseIf intTmp >= Asc("哦") And intTmp < Asc("啪") Then
GetPY = GetPY & "O"
ElseIf intTmp >= Asc("啪") And intTmp < Asc("期") Then
GetPY = GetPY & "P"
ElseIf intTmp >= Asc("期") And intTmp < Asc("然") Then
GetPY = GetPY & "Q"
ElseIf intTmp >= Asc("然") And intTmp < Asc("撒") Then
GetPY = GetPY & "R"
ElseIf intTmp >= Asc("撒") And intTmp < Asc("塌") Then
GetPY = GetPY & "S"
ElseIf intTmp >= Asc("塌") And intTmp < Asc("挖") Then
GetPY = GetPY & "T"
ElseIf intTmp >= Asc("挖") And intTmp < Asc("昔") Then
GetPY = GetPY & "W"
ElseIf intTmp >= Asc("昔") And intTmp < Asc("压") Then
GetPY = GetPY & "X"
ElseIf intTmp >= Asc("压") And intTmp < Asc("匝") Then
GetPY = GetPY & "Y"
ElseIf intTmp >= Asc("匝") And intTmp < 0 Then
GetPY = GetPY & "Z"
ElseIf (intTmp >= 65 And intTmp <= 91) Or (intTmp >= 97 And intTmp <= 123) Then
GetPY = GetPY & Mid(strParmeter, i, 1)
Else
GetPY = GetPY & "*"
End If
Next
End Function

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧