我这里只有1类汉字的,谢霆锋的霆字都不认识!~急呀!!谁有呀,帮帮忙啦,来来,我是一只菜鸟,来来来来来来……
解决方案 »
- 用Delphi和MapX开发GIS系统问题,如何实现在mapx1地图窗口中多个车辆动态显示,并当同一辆车发生位置变化时,车辆随之变化,最好能在地图上显示车辆行驶轨迹?
- 请教各位, 用 Delphi 连接 Oracle ,在 Database 服务器端需要开放哪些端口?
- LabeledEdit中如何让特定的字符高亮度显示
- 请教大家几个关于STRINGGRID 的问题,急,在线等
- 关于ComboBox的显示风格
- 2个有关intraweb的小问题,很着急,在线等。
- 懵懂菜鸟发问:如何在已有的component基础上增加属性和方法?
- DBISAM问题
- 如何将.gif动话显示到窗体上?
- 请问在什么时候要加[]?
- 写入access2000日期/时间字段时类型出错
- 问候大家 晚上好 ,有个问题请教,立即给50分!
'****************************************
'获得汉字的拼音
'****************************************
Private DictColl As New Scripting.Dictionary '拼音数据关键字和条目对
Public ErrNum As Long '错误码
Public ErrString As String
Public SpacePY As String
Private Function FindPY(Num As Long) As String
Dim ItemsList
Dim KeysList
Dim I As Integer
On Error GoTo ERR_DO
If Num > 0 And Num < 160 Then
FindPY = Chr(Num)
Else
If Num < -20319 Or Num > -10247 Then
FindPY = ""
Else
ItemsList = DictColl.Items
KeysList = DictColl.Keys
For I = DictColl.Count - 1 To 0 Step -1
If ItemsList(I) <= Num Then Exit For
Next
FindPY = KeysList(I)
End If
End If
ERR_EXIT:
Exit Function
ERR_DO:
FindPY = ""
ErrNum = 1002 'Err.Number
ErrString = "检索汉字拼音失败!" '& vbCrLf & vbCrLf & Err.Description
GoTo ERR_EXITEnd Function
Public Function GetPY(ByVal strT As String) As String
Dim I As Integer
On Error GoTo ERR_DO
ErrNum = 0
ErrString = ""
GetPY = ""
If SpacePY & "" = "" Then
SpacePY = " "
Else
SpacePY = Left(SpacePY, 1)
End If
For I = 1 To Len(strT)
If GetPY = "" Then
GetPY = GetPY & FindPY(Asc(Mid(strT, I, 1)))
Else
GetPY = GetPY & SpacePY & FindPY(Asc(Mid(strT, I, 1)))
End If
Next
ERR_EXIT:
Exit Function
ERR_DO:
GetPY = ""
ErrNum = 1001 ' Err.Number
ErrString = "检索汉字拼音失败!" '& vbCrLf & vbCrLf & Err.Description
GoTo ERR_EXIT
End FunctionPrivate Sub Class_Initialize()
'初始化
On Error GoTo ERR_DO
SpacePY = " "
'Set DictColl = CreateObject("Scripting.Dictionary")
With DictColl
.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 "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
.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
ErrNum = 0
ErrString = ""
ERR_EXIT:
Exit Sub
ERR_DO:
ErrNum = 1000 'Err.Number
ErrString = "初始化Dictionary失败!" '& vbCrLf & vbCrLf & Err.Description
GoTo ERR_EXIT
End Sub
Public Function GetPY(a1 As String) As String
Dim t1 As String
If Asc(a1) < 0 Then
t1 = Left(a1, 1)
If Asc(t1) < Asc("啊") Then
GetPY = "0"
Exit Function
End If
If Asc(t1) >= Asc("啊") And Asc(t1) < Asc("芭") Then
GetPY = "A"
Exit Function
End If
If Asc(t1) >= Asc("芭") And Asc(t1) < Asc("擦") Then
GetPY = "B"
Exit Function
End If
If Asc(t1) >= Asc("擦") And Asc(t1) < Asc("搭") Then
GetPY = "C"
Exit Function
End If
If Asc(t1) >= Asc("搭") And Asc(t1) < Asc("蛾") Then
GetPY = "D"
Exit Function
End If
If Asc(t1) >= Asc("蛾") And Asc(t1) < Asc("发") Then
GetPY = "E"
Exit Function
End If
If Asc(t1) >= Asc("发") And Asc(t1) < Asc("噶") Then
GetPY = "F"
Exit Function
End If
If Asc(t1) >= Asc("噶") And Asc(t1) < Asc("哈") Then
GetPY = "G"
Exit Function
End If
If Asc(t1) >= Asc("哈") And Asc(t1) < Asc("击") Then
GetPY = "H"
Exit Function
End If
If Asc(t1) >= Asc("击") And Asc(t1) < Asc("喀") Then
GetPY = "J"
Exit Function
End If
If Asc(t1) >= Asc("喀") And Asc(t1) < Asc("垃") Then
GetPY = "K"
Exit Function
End If
If Asc(t1) >= Asc("垃") And Asc(t1) < Asc("妈") Then
GetPY = "L"
Exit Function
End If
If Asc(t1) >= Asc("妈") And Asc(t1) < Asc("拿") Then
GetPY = "M"
Exit Function
End If
If Asc(t1) >= Asc("拿") And Asc(t1) < Asc("哦") Then
GetPY = "N"
Exit Function
End If
If Asc(t1) >= Asc("哦") And Asc(t1) < Asc("啪") Then
GetPY = "O"
Exit Function
End If
If Asc(t1) >= Asc("啪") And Asc(t1) < Asc("期") Then
GetPY = "P"
Exit Function
End If
If Asc(t1) >= Asc("期") And Asc(t1) < Asc("然") Then
GetPY = "Q"
Exit Function
End If
If Asc(t1) >= Asc("然") And Asc(t1) < Asc("撒") Then
GetPY = "R"
Exit Function
End If
If Asc(t1) >= Asc("撒") And Asc(t1) < Asc("塌") Then
GetPY = "S"
Exit Function
End If
If Asc(t1) >= Asc("塌") And Asc(t1) < Asc("挖") Then
GetPY = "T"
Exit Function
End If
If Asc(t1) >= Asc("挖") And Asc(t1) < Asc("昔") Then
GetPY = "W"
Exit Function
End If
If Asc(t1) >= Asc("昔") And Asc(t1) < Asc("压") Then
GetPY = "X"
Exit Function
End If
If Asc(t1) >= Asc("压") And Asc(t1) < Asc("匝") Then
GetPY = "Y"
Exit Function
End If
If Asc(t1) >= Asc("匝") Then
GetPY = "Z"
Exit Function
End If
Else
If UCase(a1) <= "Z" And UCase(a1) >= "A" Then
GetPY = UCase(Left(a1, 1))
Else
GetPY = "0"
End If
End If
End Function
function GetPYIndexChar(hzchar: string): char;
begin
case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
$B0A1..$B0C4: result := 'A';
$B0C5..$B2C0: result := 'B';
$B2C1..$B4ED: result := 'C';
$B4EE..$B6E9: result := 'D';
$B6EA..$B7A1: result := 'E';
$B7A2..$B8C0: result := 'F';
$B8C1..$B9FD: result := 'G';
$B9FE..$BBF6: result := 'H';
$BBF7..$BFA5: result := 'J';
$BFA6..$C0AB: result := 'K';
$C0AC..$C2E7: result := 'L';
$C2E8..$C4C2: result := 'M';
$C4C3..$C5B5: result := 'N';
$C5B6..$C5BD: result := 'O';
$C5BE..$C6D9: result := 'P';
$C6DA..$C8BA: result := 'Q';
$C8BB..$C8F5: result := 'R';
$C8F6..$CBF9: result := 'S';
$CBFA..$CDD9: result := 'T';
$CDDA..$CEF3: result := 'W';
$CEF4..$D188: result := 'X';
$D1B9..$D4D0: result := 'Y';
$D4D1..$D7F9: result := 'Z';
else
result := char(0);
end;
end;
unit HzSpell;interfaceuses
Windows, Messages, SysUtils, Classes;type
THzSpell = class(TComponent)
protected
FHzText: String;
FSpell: String;
FSpellH: String;
procedure SetHzText(const Value: String);
function GetHzSpell: String;
function GetPyHead: String;
public
class function PyOfHz(Hz: String): String;
class function PyHeadOfHz(Hz: String): String;
published
property HzText: String read FHzText write SetHzText;
property HzSpell: String read GetHzSpell;
property PyHead: String read GetPyHead;
end;{$I HzSpDat2.inc}procedure Register;function GetHzPy(HzChar: PChar; Len: Integer): String;
function GetHzPyFull(HzChar: String): String;
function GetHzPyHead(HzChar: PChar; Len: Integer): String;
function GetPyChars(HzChar: String): String;implementationprocedure Register;
begin
RegisterComponents('System', [THzSpell]);
end;function GetHzPy(HzChar: PChar; Len: Integer): String;
var
C: Char;
Index: Integer;
begin
Result := '';
if (Len > 1) and (HzChar[0] >= #129) and (HzChar[1] >= #64) then
begin
//是否为 GBK 字符
case HzChar[0] of
#163: // 全角 ASCII
begin
C := Chr(Ord(HzChar[1]) - 128);
if C in ['a'..'z', 'A'..'Z', '0'..'9', '(', ')', '[', ']'] then
Result := C
else
Result := '';
end;
#162: // 罗马数字
begin
if HzChar[1] > #160 then
Result := CharIndex[Ord(HzChar[1]) - 160]
else
Result := '';
end;
#166: // 希腊字母
begin
if HzChar[1] in [#$A1..#$B8] then
Result := CharIndex2[Ord(HzChar[1]) - $A0]
else if HzChar[1] in [#$C1..#$D8] then
Result := CharIndex2[Ord(HzChar[1]) - $C0]
else
Result := '';
end;
else
begin // 获得拼音索引
Index := PyCodeIndex[Ord(HzChar[0]) - 128, Ord(HzChar[1]) - 63];
if Index = 0 then
Result := ''
else
Result := PyMusicCode[Index];
end;
end;
end
else if Len > 0 then
begin
//在 GBK 字符集外, 即半角字符
if HzChar[0] in ['a'..'z', 'A'..'Z', '0'..'9', '(', ')', '[', ']'] then
Result := HzChar[0]
else
Result := '';
end;
end;function GetHzPyFull(HzChar: String): String;
var
i, len: Integer;
Py: String;
function IsDouByte(C: Char): Boolean;
begin
Result := C >= #129;
end;
begin
Result := '';
i := 1;
while i <= Length(HzChar) do
begin
if IsDouByte(HzChar[i]) and (Length(HzChar) - i > 0) then
len := 2
else
len := 1;
Py := GetHzPy(@HzChar[i], len);
Inc(i, len);
if (Result <> '') and (Py <> '') then
Result := Result + ' ' + Py // + ' '
else
Result := Result + Py;
end;
end;function GetHzPyHead(HzChar: PChar; Len: Integer): String;
begin
Result := Copy(GetHzPy(HzChar, Len), 1, 1);
end;function GetPyChars(HzChar: String): String;
var
i, len: Integer;
Py: String;
function IsDouByte(C: Char): Boolean;
begin
Result := C >= #129;
end;
begin
Result := '';
i := 1;
while i <= Length(HzChar) do
begin
if IsDouByte(HzChar[i]) and (Length(HzChar) - i > 0) then
len := 2
else
len := 1;
Py := GetHzPyHead(@HzChar[i], len);
Inc(i, len);
Result := Result + Py;
end;
end;{ THzSpell }function THzSpell.GetHzSpell: String;
begin
if FSpell = '' then
begin
Result := GetHzPyFull(FHzText);
FSpell := Result;
end
else Result := FSpell;
end;function THzSpell.GetPyHead: String;
begin
if FSpellH = '' then
begin
Result := GetPyChars(FHzText);
FSpellH := Result;
end
else Result := FSpellH;
end;class function THzSpell.PyHeadOfHz(Hz: String): String;
begin
Result := GetPyChars(Hz);
end;class function THzSpell.PyOfHz(Hz: String): String;
begin
Result := GetHzPyFull(Hz);
end;procedure THzSpell.SetHzText(const Value: String);
begin
FHzText := Value;
FSpell := '';
FSpellH := '';
end;end.
可惜,不是Delphi写的。想改写一下,可是不少函数忘了。公司不用Delphi,手头也没有资料。水水你自己看着改吧。保存在Word文档里,所以有点乱。
//Function name : uf_GetFirstLetter
//Used to:返回给定汉字串的首字母串,即声母串
//Input Arguments: as_InputString - string , 给定的汉字串
//Return Value: ls_ReturnString - String , 给定的汉字串的声母串,一律为小写
//Notice: 1. 此方法基于汉字的国标汉字库区位编码的有效性,不符合此编码的系统此函
//数无效!
//2. 若汉字串含有非汉字字符,如图形符号或ASCII码,则这些非汉字字符
//将保持不变.
//Sample: ls_rtn =uf_GetFirstLetter("中华人民共和国")
// ls_rtn will be : zhrmghg//Scripts:
char lc_FirstLetter[23] //存放国标一级汉字不同读音的起始区位码对应读音
string ls_ch //临时单元
string ls_SecondSecTable //存放所有国标二级汉字读音
string ls_ReturnStr //返回串
integer li_SecPosValue[23] //存放国标一级汉字不同读音的起始区位码
integer i , j
integer li_SectorCode //汉字区码
integer li_PositionCode //汉字位码
integer li_SecPosCode //汉字区位码
integer li_offset //二级字库偏移量//Set initial value
li_SecPosValue[]={1601,1637,1833,2078,2274,2302,2433,2594,2787,3106,3212,3472,3635,3722,3730,3858,4027,4086,4390,4558,4684,4925,5249 }
lc_FirstLetter[] = {"A", "B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z"}
ls_SecondSecTable="CJWGNSPGCGNE[Y[BTYYZDXYKYGT[JNNJQMBSGZSCYJSYY[PGKBZGY[YWJKGKLJYWKPJQHY[W[DZLSGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCSCJXYEYXADZPMDSSMZJZQJYZC[J[WQJBYZPXGZNZCPWHKXHQKMWFBPBYDTJZZKQHYLYGXFPTYJYYZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBNPTSDKDYLHGYMYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWYWSBHTRXXGLHQHFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLYZHSXLZCGHPXZHZNYTDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPZJOQLCDHJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMHZWWMNZJJLXXHCHSY[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPDYZNFCYYTYCKXKYBSQKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[PQ[QSCFYMNDMGBWHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZPMGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHB[GDMYCNQQWLQHJJ[YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSL[HTZKZJECXJCJNMFBY[SFYWYBJZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJX[YZGWKYPSGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWBMYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNWCZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWGJJJPKQSBGBMMCJSSCLPQPDXCDYYKY[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMZYHYWDBXBTLMSYYYFSXJC[DXXLHJHF[SXZQHFZMZCZTQCXZXRTTDJHNNYZQQMNQDMMG[YDXMJGDHCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGSQQDDJCMBKZFFXMKDMDSYYSZCMLJDSYNSBRSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJ[GYPZLTCSMCNBTJBQFKTHBYZGKPBBYMTDSSXTBNPDKLEYCJNYDDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLG[DJLSLYGKDZPZXJYYZLWCXSZFGWYYDLYHCLJSCMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJY[CNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPPXJCJLZCSHLTOLJNMDDDLNGKAQHQHJGYKHEZNMSHRP[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYYDYJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZGSZZQLYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQFHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ "//Get it !
ls_ReturnStr = ""
For i=1 to Len(as_InputString) //依次处理as_InputString中每个字符
ls_ch=Mid(as_InputString , i , 1)
If Asc(ls_ch)<128 then // 非汉字
ls_returnStr = ls_returnStr+ls_ch // 不变
Else // 是汉字
ls_ch = Mid(as_InputString , i , 2) // 取出此汉字
li_SectorCode = Asc(Left(ls_ch, 1)) - 160 //区码
li_PositionCode = Asc(Right(ls_ch, 1)) - 160 //位码
li_SecPosCode = li_SectorCode*100 + li_PositionCode // 区位码
If li_SecPosCode>1600 and li_SecPosCode<5590 then // 第一个字符
For j=23 to 1 Step -1 // 找声母
If li_SecPosCode>=li_SecPosValue[j] then
ls_returnStr = ls_returnStr + lc_FirstLetter[j]
Exit
End if
Next
Else // 第一个字符
li_offset = (li_SectorCode - 56 ) *94 + li_PositionCode - 1 // 计算偏移量
If li_offset>=0 and li_offset<=3007 then //二区汉字
ls_returnStr = ls_returnStr + Mid(ls_SecondSecTable, li_offset , 1) //取出此字声母
End if
End if
i = i+1 // 指向下一个汉字
End if
Next // 处理完毕//Return result
Return lower( ls_returnStr )//返回 as_InputString 的声母串