大家好,我是公众号3分钟学堂的郭立员~,我来为大家科普一下关于按键精灵怎么设置随机输出数字?以下内容希望对你有帮助!

按键精灵怎么设置随机输出数字(对一句话中的数字)

按键精灵怎么设置随机输出数字

大家好,我是公众号3分钟学堂的郭立员~

前言

这是群里有人问的一个问题,怎么把一段字符串中的数值 1或者-1,如"第23098期"变成"第23099期"。

数字的递增先要把数字从字符串中提取出来,然后做加减法即可,所以这个问题基本就可以转为怎么从字符串中提取数字。

一、使用正则表达式提取数字

数字提取的表达式是%d

import "shanhai.lua" dim str="第23098期" dim arr=shanhai.RegexFind(str,"第(%d )期") TracePrint Replace(str,arr(0),cstr(arr(0) 1))

二、截取法

"第23098期"在数字前后有第和期两个2汉字,先要知道第和期的位置,然后截取它们之间的内容,就是我们要的数字

dim str="第23098期" dim leftstr=utf8.InStr(1,str,"第") dim rightstr=utf8.InStr(1,str,"期") TracePrint leftstr,rightstr dim num=utf8.mid(str,leftstr 1,rightstr-leftstr-1) TracePrint "第"&num 1&"期"

三、根据汉字和数字的字符串长度不同来区分

在按键中有2个获取字符长度的命令,utf8.len和len,对于utf8.len命令来说,所有单一字符的长度都是1,而len命令不同,汉字的长度是3,数字的长度是1,根据这个区别进行区分。

dim str="第23098期" dim words="",word For i = 1 To UTF8.Len(str) word= utf8.mid(str,i,1) If Len(word) = 1 Then words=words&word End If Next TracePrint "第"&words 1&"期"

四、使用IsNumeric命令判断是否为数字

和方法3一样,对每个字符判断是否是数字

dim str="第23098期" dim words="",word For i = 1 To UTF8.Len(str) word= utf8.mid(str,i,1) If IsNumeric(word) Then words=words&word End If Next TracePrint "第"&words 1&"期"

五、关于把递增(递减)后的数字放回字符串中的方法

①字符串的拼接,数字前后的内容原封不动的用连接符&拼在一起

②替换命令,找到数字之后,直接用新的数字替旧的数字。

在上面代码中这2个方法都有使用到。

注意:

对于上面几种方法,我个人觉得正则匹配的方法最靠谱,其他的方法如果当字符串内容比较多,并且有干扰的数字或者汉字,都有可能出现识别错误或者识别的数字比实际的多的情况。

=正文完=

,