大家好,我是公众号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个方法都有使用到。
注意:
对于上面几种方法,我个人觉得正则匹配的方法最靠谱,其他的方法如果当字符串内容比较多,并且有干扰的数字或者汉字,都有可能出现识别错误或者识别的数字比实际的多的情况。
=正文完=
,