如何随机生成指定数目的国标汉字?
所以,当我们需要n个任意汉字时,我们不必建一个全部汉字表,而是利用区位码实现常用汉字的提取。
下面的代码可以实现任意数目汉字的生成:
Private Sub getrndhanzi(ByVal n As Integer)
Dim s() As String, i As Integer
Dim temp1 As Integer, temp2 As Integer
ReDim s(1 To n)
Randomize
For i = 1 To n
temp1 = 16 + Int(Rnd * 72)
If temp1 = 55 Then
temp2 = Int(Rnd * 90) '一级汉字从1601-1694,1701-1794,.....5401-5494,5501-5589,共94*40-5=3755 个汉字
Else
temp2 = Int(Rnd * 95) '二级汉字从5601-5694,5701-5794,.....8601-8694,8701-8794,共94*32=3008 个汉字
End If
s(i) = Chr("&H" & Hex(temp1 + 160) & Hex(temp2 + 160))
Next
Debug.Print Join(s, "")'输出
End Sub
Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 25 '分别生成1-25个任意汉字
getrndhanzi i
Next
End Sub
输出:
腿
夫敞
途罨椽
涅搦侄铽
榨藸禒艟球
枵舟斟盯滩桫
狲暗田苫撂蕾岢
冠澧炫鲼噘惺馘柘
巧愁炔哔臆策籼锭昏
紶假媪慈乘嘎肤景濡薤
呋刨锺灰榉懋唇弱献囟垤
均耋撤阗驿迩愍殒埚砸宕薅
蒹翦俄形碌哧烀爝懒缭嫔捭浑
瑾砜疬哜遒濂勾彐綘珩苓就萌炳
光椁旖趁鲲頎壕狁媪暑额忾帷淤黹
湫熏裤降旺廓淳傻蜕脬荪色注紫劾吾
陶沥瑗骶埴于喃刮瘿突赅斛简铨觞抨唼
格鸽乜衍夙菀鲡败陆褐哙苑滓淆踵讫头绑
德泠婷岙湔池桨郅峁汩卒控诉刍镗椎鬣越嫉
义懂聂其定鳓脯膪巯吐昏罚返抖陵沌戗喘茺缂
废雾旯浠疼赃勋妓鳟埏帮盂蕹朐裂祆膻拌脎威纯
宛免作绣稞涑枭搬怿旦熨呈弃驰翔聚饰栩燧艴氢贫
豕源髑乍蚍夏己履毕芤毁篑子褊崖坏忑霉钿瘢驵迁裨
獬纷胚桨衫蹒疯祧武琢吣酃踱免逘浊顸坐磬挫郐婶缪锰
拽技薯帙陕槲逗蜱嘧雌怙诖椭踉盔锍认致暝榴蘖逆捻螨噬
附:
汉字与区位码转换代码:
Function quwei(ByVal x As String) As String '获得某汉字或字符对应的的区位码
If Asc(x) >= 0 Then Exit Function
x = Hex(Asc(x))
quwei = Format(CDec("&H" & Left(x, 2)) - 160, "00") & Format(CDec("&H" & Right(x, 2)) - 160, "00")
End Function
Function hanzi(ByVal x As String) As String'获得某区位码对应汉字或字符
hanzi = Chr("&H" & Hex(Val(Left(x, 2)) + 160) & Hex(Val(Right(x, 2)) + 160))
End Function
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=51270
浙公网安备 33010602011771号