vb6中如何实现:给出一个汉字,这个汉字的拼音声母包含两个字母,如何求出该汉字拼音的声母。如给出一个“长”字(拼音是chang),如何得到

lmlm3 2007-07-28 01:35:20
假设一个函数x()能实现这个功能,应该是x("长")返回ch。如何实现?
...全文
1485 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdingyun 2007-10-30
  • 打赏
  • 举报
回复
Public Function hzz()
Dim K As Integer
Dim l As Integer
l = Len(PYH(j))
For K = 1 To l
hz1(K) = Mid(PYH(j), K, 1)
If hz1(K) = "A" Or hz1(K) = "I" Or hz1(K) = "E" Or hz1(K) = "V" Or hz1(K) = "U" Or hz1(K) = "O" Then
hz1(K) = Mid(PYH(j), 1, K - 1)
'Print hz1(K); K
Exit For
End If
Next
py1(j) = hz1(K)
End Function
zdingyun 2007-10-30
  • 打赏
  • 举报
回复
Option Explicit
Dim i As Integer
Dim sj() As String
Dim l As Integer
Dim j As Integer
'Dim K As Integer
Dim hz(7) As String * 1
Dim py1(7) As String * 1
Dim hz1(7) As String
Dim PY As String
Dim PYH(7) As String
Dim PYHSTR As String

Private Sub Form_Load()
Text1 = ""
Text2 = ""
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
For j = 1 To Len(Text1)
hz(j) = Mid(Text1, j, 1)
'Print hz(j)
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db8.mdb;Persist Security Info=False"
Adodc1.RecordSource = "select * from winpy where 汉字 like '" & hz(j) & "%'"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
l = Len(Adodc1.Recordset(0))
ReDim sj(l)
For i = 1 To l
sj(i) = Mid(Adodc1.Recordset(0), i, 1)
If Asc(sj(i)) > 0 Then
PY = UCase(Mid(Adodc1.Recordset(0), i, l - i + 1))
Exit For
End If
Next
End If
'Print PY
PYH(j) = PY
Next j
For j = 1 To Len(Text1)
hzz
PYHSTR = PYHSTR + py1(j)
Next
'Print PYHSTR
Text3 = PYHSTR
KeyAscii = 0
End If
End Sub

Public Function hzz()
Dim K As Integer
Dim l As Integer
l = Len(PYH(j))
For K = 1 To l
hz1(K) = Mid(PYH(j), K, 1)
If hz1(K) = "A" Or hz1(K) = "I" Or hz1(K) = "E" Or hz1(K) = "U" Or hz1(K) = "O" Then
hz1(K) = Mid(PYH(j), 1, K - 1)
'Print hz1(K); K
Exit For
End If
Next
py1(j) = hz1(K)
End Function
zzyong00 2007-09-22
  • 打赏
  • 举报
回复
我也顶一下
vbman2003 2007-09-22
  • 打赏
  • 举报
回复
顶蚜虫
dt168 2007-09-22
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
不错 mark
zdingyun 2007-09-22
  • 打赏
  • 举报
回复
使用yachong(蚜虫)提供的 运行imegen.exe,
把C:\WINDOWS\system32\WINPY.mb逆转换为txt文件
然后将WINPY.TXT文件的头部的内容:
Description]
Name=全拼
MaxCodes=12
MaxElement=1
UsedCodes=abcdefghijklmnopqrstuvwxyz
WildChar=?
NumRules=3
[Rule]
ca4=p10+p20+p30+p40
ce2=p10+p20
ce3=p10+p20+p30
[Text]
删除
把此WINPY.TXT文件导入ACCESS数据库保存与WINPY表,不设关键字,字段命名为汉字,做成字库,用VB的程序读出,代码如下:
Option Explicit
Dim i As Integer
Dim sj() As String
Dim l As Integer

Private Sub Form_Load()
Text1 = ""
Text2 = ""
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\My Documents\db8.mdb;Persist Security Info=False"
Adodc1.RecordSource = "select * from winpy where 汉字 like '" & Text1 & "%'"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
l = Len(Adodc1.Recordset(0))
ReDim sj(l)
For i = 1 To l
sj(i) = Mid(Adodc1.Recordset(0), i, 1)
If Asc(sj(i)) > 0 Then
Text2 = UCase(Mid(Adodc1.Recordset(0), i, l - i + 1))
Exit For
End If
Next
End If
End If
End Sub
在Text1中输入需查找的汉字,按ENTER键后,Text2内显示查找汉字的拼音。
yachong 2007-07-28
  • 打赏
  • 举报
回复
与PinyinBiao()类似的代码我也用过,有些字找不到对应的拼音
例如“自忖”的“忖”字,“怄气”的“怄”,按照这种方法就查不到拼音
我觉得用windows自带的全拼输入法的字库比较好
运行C:\Program Files\Windows NT\Accessories\imegen.exe,
把C:\WINDOWS\system32\WINPY.mb逆转换为txt文件
然后再整理一下就是一个很不错的拼音库
lmlm3 2007-07-28
  • 打赏
  • 举报
回复
PinyinBiao() 中的音标共有395个,不知道全否。
听有的网友说,一共是409个,不知少了哪14个。
tzwsoho 2007-07-28
  • 打赏
  • 举报
回复
.Add "nei", -15143
.Add "nen", -15141
.Add "neng", -15140
.Add "ni", -15139
.Add "nian", -15128
.Add "niang", -15121
.Add "niao", -15119
.Add "nie", -15117
.Add "nin", -15110
.Add "ning", -15109
.Add "niu", -14941
.Add "nong", -14937
.Add "nu", -14933
.Add "nv", -14930
.Add "nuan", -14929
.Add "nue", -14928
.Add "nuo", -14926
.Add "o", -14922
.Add "ou", -14921
.Add "pa", -14914
.Add "pai", -14908
.Add "pan", -14902
.Add "pang", -14894
.Add "pao", -14889
.Add "pei", -14882
.Add "pen", -14873
.Add "peng", -14871
.Add "pi", -14857
.Add "pian", -14678
.Add "piao", -14674
.Add "pie", -14670
.Add "pin", -14668
.Add "ping", -14663
.Add "po", -14654
.Add "pu", -14645
.Add "qi", -14630
.Add "qia", -14594
.Add "qian", -14429
.Add "qiang", -14407
.Add "qiao", -14399
.Add "qie", -14384
.Add "qin", -14379
.Add "qing", -14368
.Add "qiong", -14355
.Add "qiu", -14353
.Add "qu", -14345
.Add "quan", -14170
.Add "que", -14159
.Add "qun", -14151
.Add "ran", -14149
.Add "rang", -14145
.Add "rao", -14140
.Add "re", -14137
.Add "ren", -14135
.Add "reng", -14125
.Add "ri", -14123
.Add "rong", -14122
.Add "rou", -14112
.Add "ru", -14109
.Add "ruan", -14099
.Add "rui", -14097
.Add "run", -14094
.Add "ruo", -14092
.Add "sa", -14090
.Add "sai", -14087
.Add "san", -14083
.Add "sang", -13917
.Add "sao", -13914
.Add "se", -13910
.Add "sen", -13907
.Add "seng", -13906
.Add "sha", -13905
.Add "shai", -13896
.Add "shan", -13894
.Add "shang", -13878
.Add "shao", -13870
.Add "she", -13859
.Add "shen", -13847
.Add "sheng", -13831
.Add "shi", -13658
.Add "shou", -13611
.Add "shu", -13601
.Add "shua", -13406
.Add "shuai", -13404
.Add "shuan", -13400
.Add "shuang", -13398
.Add "shui", -13395
.Add "shun", -13391
.Add "shuo", -13387
.Add "si", -13383
.Add "song", -13367
.Add "sou", -13359
.Add "su", -13356
.Add "suan", -13343
.Add "sui", -13340
.Add "sun", -13329
.Add "suo", -13326
.Add "ta", -13318
.Add "tai", -13147
.Add "tan", -13138
.Add "tang", -13120
.Add "tao", -13107
.Add "te", -13096
.Add "teng", -13095
.Add "ti", -13091
.Add "tian", -13076
.Add "tiao", -13068
.Add "tie", -13063
.Add "ting", -13060
.Add "tong", -12888
.Add "tou", -12875
.Add "tu", -12871
.Add "tuan", -12860
.Add "tui", -12858
.Add "tun", -12852
.Add "tuo", -12849
.Add "wa", -12838
.Add "wai", -12831
.Add "wan", -12829
.Add "wang", -12812
.Add "wei", -12802
.Add "wen", -12607
.Add "weng", -12597
.Add "wo", -12594
.Add "wu", -12585
.Add "xi", -12556
.Add "xia", -12359
.Add "xian", -12346
.Add "xiang", -12320
.Add "xiao", -12300
.Add "xie", -12120
.Add "xin", -12099
.Add "xing", -12089
.Add "xiong", -12074
.Add "xiu", -12067
.Add "xu", -12058
.Add "xuan", -12039
.Add "xue", -11867
.Add "xun", -11861
.Add "ya", -11847
.Add "yan", -11831
.Add "yang", -11798
.Add "yao", -11781
.Add "ye", -11604
.Add "yi", -11589
.Add "yin", -11536
.Add "ying", -11358
.Add "yo", -11340
.Add "yong", -11339
.Add "you", -11324
.Add "yu", -11303
.Add "yuan", -11097
.Add "yue", -11077
.Add "yun", -11067
.Add "za", -11055
.Add "zai", -11052
.Add "zan", -11045
.Add "zang", -11041
.Add "zao", -11038
.Add "ze", -11024
.Add "zei", -11020
.Add "zen", -11019
.Add "zeng", -11018
.Add "zha", -11014
.Add "zhai", -10838
.Add "zhan", -10832
.Add "zhang", -10815
.Add "zhao", -10800
.Add "zhe", -10790
.Add "zhen", -10780
.Add "zheng", -10764
.Add "zhi", -10587
.Add "zhong", -10544
.Add "zhou", -10533
.Add "zhu", -10519
.Add "zhua", -10331
.Add "zhuai", -10329
.Add "zhuan", -10328
.Add "zhuang", -10322
.Add "zhui", -10315
.Add "zhun", -10309
.Add "zhuo", -10307
.Add "zi", -10296
.Add "zong", -10281
.Add "zou", -10274
.Add "zu", -10270
.Add "zuan", -10262
.Add "zui", -10260
.Add "zun", -10256
.Add "zuo", -10254
End With
End Sub

Private Sub Command1_Click()
MsgBox getPinyin(Asc(Text1.Text))
End Sub

Private Sub Form_Load()
Set D = CreateObject("Scripting.Dictionary")
Call PinyinBiao
End Sub
tzwsoho 2007-07-28
  • 打赏
  • 举报
回复

Sub PinyinBiao()
With D
.RemoveAll
.CompareMode = vbTextCompare
.Add "a", -20319
.Add "ai", -20317
.Add "an", -20304
.Add "ang", -20295
.Add "ao", -20292
.Add "ba", -20283
.Add "bai", -20265
.Add "ban", -20257
.Add "bang", -20242
.Add "bao", -20230
.Add "bei", -20051
.Add "ben", -20036
.Add "beng", -20032
.Add "bi", -20026
.Add "bian", -20002
.Add "biao", -19990
.Add "bie", -19986
.Add "bin", -19982
.Add "bing", -19976
.Add "bo", -19805
.Add "bu", -19784
.Add "ca", -19775
.Add "cai", -19774
.Add "can", -19763
.Add "cang", -19756
.Add "cao", -19751
.Add "ce", -19746
.Add "ceng", -19741
.Add "cha", -19739
.Add "chai", -19728
.Add "chan", -19725
.Add "chang", -19715
.Add "chao", -19540
.Add "che", -19531
.Add "chen", -19525
.Add "cheng", -19515
.Add "chi", -19500
.Add "chong", -19484
.Add "chou", -19479
.Add "chu", -19467
.Add "chuai", -19289
.Add "chuan", -19288
.Add "chuang", -19281
.Add "chui", -19275
.Add "chun", -19270
.Add "chuo", -19263
.Add "ci", -19261
.Add "cong", -19249
.Add "cou", -19243
.Add "cu", -19242
.Add "cuan", -19238
.Add "cui", -19235
.Add "cun", -19227
.Add "cuo", -19224
.Add "da", -19218
.Add "dai", -19212
.Add "dan", -19038
.Add "dang", -19023
.Add "dao", -19018
.Add "de", -19006
.Add "deng", -19003
.Add "di", -18996
.Add "dian", -18977
.Add "diao", -18961
.Add "die", -18952
.Add "ding", -18783
.Add "diu", -18774
.Add "dong", -18773
.Add "dou", -18763
.Add "du", -18756
.Add "duan", -18741
.Add "dui", -18735
.Add "dun", -18731
.Add "duo", -18722
.Add "e", -18710
.Add "en", -18697
.Add "er", -18696
.Add "fa", -18526
.Add "fan", -18518
.Add "fang", -18501
.Add "fei", -18490
.Add "fen", -18478
.Add "feng", -18463
.Add "fo", -18448
.Add "fou", -18447
.Add "fu", -18446
.Add "ga", -18239
.Add "gai", -18237
.Add "gan", -18231
.Add "gang", -18220
.Add "gao", -18211
.Add "ge", -18201
.Add "gei", -18184
.Add "gen", -18183
.Add "geng", -18181
.Add "gong", -18012
.Add "gou", -17997
.Add "gu", -17988
.Add "gua", -17970
.Add "guai", -17964
.Add "guan", -17961
.Add "guang", -17950
.Add "gui", -17947
.Add "gun", -17931
.Add "guo", -17928
.Add "ha", -17922
.Add "hai", -17759
.Add "han", -17752
.Add "hang", -17733
.Add "hao", -17730
.Add "he", -17721
.Add "hei", -17703
.Add "hen", -17701
.Add "heng", -17697
.Add "hong", -17692
.Add "hou", -17683
.Add "hu", -17676
.Add "hua", -17496
.Add "huai", -17487
.Add "huan", -17482
.Add "huang", -17468
.Add "hui", -17454
.Add "hun", -17433
.Add "huo", -17427
.Add "ji", -17417
.Add "jia", -17202
.Add "jian", -17185
.Add "jiang", -16983
.Add "jiao", -16970
.Add "jie", -16942
.Add "jin", -16915
.Add "jing", -16733
.Add "jiong", -16708
.Add "jiu", -16706
.Add "ju", -16689
.Add "juan", -16664
.Add "jue", -16657
.Add "jun", -16647
.Add "ka", -16474
.Add "kai", -16470
.Add "kan", -16465
.Add "kang", -16459
.Add "kao", -16452
.Add "ke", -16448
.Add "ken", -16433
.Add "keng", -16429
.Add "kong", -16427
.Add "kou", -16423
.Add "ku", -16419
.Add "kua", -16412
.Add "kuai", -16407
.Add "kuan", -16403
.Add "kuang", -16401
.Add "kui", -16393
.Add "kun", -16220
.Add "kuo", -16216
.Add "la", -16212
.Add "lai", -16205
.Add "lan", -16202
.Add "lang", -16187
.Add "lao", -16180
.Add "le", -16171
.Add "lei", -16169
.Add "leng", -16158
.Add "li", -16155
.Add "lia", -15959
.Add "lian", -15958
.Add "liang", -15944
.Add "liao", -15933
.Add "lie", -15920
.Add "lin", -15915
.Add "ling", -15903
.Add "liu", -15889
.Add "long", -15878
.Add "lou", -15707
.Add "lu", -15701
.Add "lv", -15681
.Add "luan", -15667
.Add "lue", -15661
.Add "lun", -15659
.Add "luo", -15652
.Add "ma", -15640
.Add "mai", -15631
.Add "man", -15625
.Add "mang", -15454
.Add "mao", -15448
.Add "me", -15436
.Add "mei", -15435
.Add "men", -15419
.Add "meng", -15416
.Add "mi", -15408
.Add "mian", -15394
.Add "miao", -15385
.Add "mie", -15377
.Add "min", -15375
.Add "ming", -15369
.Add "miu", -15363
.Add "mo", -15362
.Add "mou", -15183
.Add "mu", -15180
.Add "na", -15165
.Add "nai", -15158
.Add "nan", -15153
.Add "nang", -15150
.Add "nao", -15149
.Add "ne", -15144
tzwsoho 2007-07-28
  • 打赏
  • 举报
回复
'这个代码能获取整个拼音
'你可以改一下就可以获取声母了
Option Explicit
Dim D As Object
Function getPinyin(num As Long) As String
Dim a()
Dim b()
Dim i As Integer
If num > 0 And num < 160 Then
getPinyin = Chr(num)
Else
If num < -20319 Or num > -10247 Then
getPinyin = ""
Else
a = D.Items
b = D.Keys
For i = D.Count - 1 To 0 Step -1
If a(i) <= num Then Exit For
Next
getPinyin = UCase(b(i))
End If
End If
End Function

7,763

社区成员

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

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