PowerDesigner技巧集6 ---- 用vbscript获取每个汉字中的首字母

用vbscript获取每个汉字中的首字母。脚本如下:

' 获得当前模型 Dim mdl Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox "不存在活动模型! " Else ListObjects(mdl) End If ' 列出所有的对象 Private Sub ListObjects(e) output "实体名:" & e.code Dim obj For Each obj In e.children TableSetNameToCode(obj) Next ' 存在包时,递归包中的实体对象 Dim f For Each f In e.Packages ListObjects f Next End Sub ' 转换过程 Private Sub TableSetNameToCode(CurrentObject) ' 当对象是实体对象时执行转换 if not CurrentObject.Iskindof(cls_Entity) then exit sub ' 当实体为快捷方式时跳过 if not CurrentObject.isShortcut then output CurrentObject.name 'T_ 为表头,可根据需要修改。 ' 调用GetPy 子函数来完成实体名的转换 CurrentObject.code = "T_"&GetPy(CurrentObject.name) Dim col ' running column dim index1 index1 = 0 ' 转换每个实体中属性的名称 for each col in CurrentObject.attributes dim s ' 调用GetPy 子函数来完成属性名的转换 s = GetPy( col.name) col.code = s next end if End Sub ' 生成中文串首字母串 function GetPy(strxx) dim i dim getpy1 for i=1 to len(strxx) getpy1=getpy1 & getpychar(mid(strxx,i,1)) next GetPy = getpy1 End function ' 获取中文单字的首字母 Function getpychar(char) 'Asc 函数返回与字符串的第一个字母对应的ANSI 字符代码 ' 数字、字母和下划线不予转换,直接返回 if ((asc(char) >= asc("0") and asc(char) <= asc("9")) or(asc(char) >= asc("A") and asc(char) <= asc("Z")) or (asc(char) >= asc("a") and asc(char) <= asc("z")) or asc(char) = asc("_") ) then ' 注意:在实际执行脚本时then 必须与if 在同一行 getpychar = char else dim tmpp:tmpp=65536+asc(char) if(tmpp>=45217 and tmpp <=45252) then getpychar= "A" elseif(tmpp>=45253 and tmpp <=45760) then getpychar= "B" elseif(tmpp>=45761 and tmpp <=46317) then getpychar= "C" elseif(tmpp>=46318 and tmpp <=46825) then getpychar= "D" elseif(tmpp>=46826 and tmpp <=47009) then getpychar= "E" elseif(tmpp>=47010 and tmpp <=47296) then getpychar= "F" elseif(tmpp>=47297 and tmpp <=47613) then getpychar= "G" elseif(tmpp>=47614 and tmpp <=48118) then getpychar= "H" elseif(tmpp>=48119 and tmpp <=49061) then getpychar= "J" elseif(tmpp>=49062 and tmpp <=49323) then getpychar= "K" elseif(tmpp>=49324 and tmpp <=49895) then getpychar= "L" elseif(tmpp>=49896 and tmpp <=50370) then getpychar= "M" elseif(tmpp>=50371 and tmpp <=50613) then getpychar= "N" elseif(tmpp>=50614 and tmpp <=50621) then getpychar= "O" elseif(tmpp>=50622 and tmpp <=50905) then getpychar= "P" elseif(tmpp>=50906 and tmpp <=51386) then getpychar= "Q" elseif(tmpp>=51387 and tmpp <=51445) then getpychar= "R" elseif(tmpp>=51446 and tmpp <=52217) then getpychar= "S" elseif(tmpp>=52218 and tmpp <=52697) then getpychar= "T" elseif(tmpp>=52698 and tmpp <=52979) then getpychar= "W" elseif(tmpp>=52980 and tmpp <=53688) then getpychar= "X" elseif(tmpp>=53689 and tmpp <=54480) then getpychar= "Y" elseif(tmpp>=54481 and tmpp <=62289) then getpychar= "Z" else getpychar="" End if end if End Function
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值