这个案例来自于VIP群友的问题,问我能不能把数字自动换成谐音字?看到这个问题我猜测是为了发联系方式,又怕平台检测到,所以用谐音字代替。
比方说,QQ:453485278 可以写成企鹅:四伍叄泗捌伍七扒
通过这种谐音字的转换,平台检测不到多位纯数字,减少QQ被检测出来的可能性。
前期需要准备一套谐音字库,用来替换数字使用。
接下来说一下原理:
把连续数字拆分,逐一读取得到单个数字。
匹配每一个数字对应的谐音库。
从匹配的谐音库中随机提取一个。
将所有的谐音字组合在一起,形成一组数字谐音。
我在编写这个脚本遇到的一些问题,初期群友是想把谐音库放到数字里面。
这种方式在思路上是可以,但是在编写的时候发现,代表不够简洁需要调用10个数组,加上变量名又不支持 i+数字这种拼接方式。考虑了一下换了另外一种方式,把谐音字库存在表中(二维数组)。
Dim arr={{"零","澪","玲"},{"一","壹","伊"},{"二","贰","弍"},{"三","叁","彡"},{"四","泗","肆"},{"五","伍","忢"},{"六","陆","溜"},{"七","柒","漆"},{"八","捌","扒"},{"九","玖","氿"}}
TracePrint arr(0,1)
TracePrint arr[1][2]
对于这种二维数组,有两种读取方式,一是数组读取方式就是arr(0,1),二是表的读取方式arr[1][2],两种的区别是数组的第一个内容是从0开始,二是表的第一个内容是从1开始。
这里我选择数组的表示方式,因为0如果用表的方式表达就是10了,而数组可以用0表示。
有两个容易犯错的小细节:
由于数字的个数不确定,用到了len命令,但是数字不支持,需要先转为字符串 cstr(数字)。
考虑到谐音库未必都是3个字,我在编写的时候先读取一维数组,然后获取数组最大下标来来确定有几个字,然后把字数赋值给随机数命令。
网友评论