如何实现一段文本类型的变量中,有没有对应的数字段



  • 文本变量中假设有这些内容,10,20,30,40,如何判断其中有没有10,因为这些都是数字,在判断文本的时候要加str()嘛



  • @Yamls 可以用find表达式,find能返回参数A中参数B所在的位置,如果没有则会返回-1,例如find("asdfgh","s")的结果是1(从0数起的,所以是1),如果find("asdfgh","e")则结果是-1,所以可以拿这个结果是否是-1来判断一段文本中有没有哪些内容,不过数字的话要特殊一点,例如find("10,20,100","1")也是找得到的,但是你想要找的是单独的1在不在,显然这种误判的情况不行,所以一般这个方法最好有明显的起始、结束符来限定,例如我自己个人常用的分隔符是一对方括号,例如"[10][20][100]",然后查找某值是否存在的时候用find("[10][20][100]","["&要查找的值&"]"),需要分割的时候用mid表达式把首尾去掉,用"]["来分割,我另一个朋友则是干脆直接前后多加一个","号,然后find(",10,20,100,",","&要查找的值&","),需要分割的时候直接逻辑上考虑跳过首个空字符串和最后一个空字符串。当然,还有一种做法是用正则表达式来检测,据说思路是一致的,但不需要多花费心力处理起始结束符的情况,但是我不熟,所以就不瞎说了。



  • 感谢!!!!!!



  • 如果要给变量加数字,10,20,该如何添加进去呢



  • @Yamls 变量的值设置为 变量本身&"接在原变量值后面的内容" 就行了,但如果你还希望它们接入之后有排序,那建议别用变量,用数组方便得多



  • @Yamls 提供一下正则表达式的写法:
    undefined

    表达式内容:-?[0-9]+(\\\\.[0-9]+)?
    比较值内容:regexmatchcount(动作组.param(0),"-?[0-9]+(\\\\.[0-9]+)?","gi")
    里面的“动作组.param(0)”换成你需要比较的变量即可。

    regexmatchcount()用来返回指定值中符合正则表达式的数量。
    正则表达式会返回传入参数中有几 “段” 数字。我这里的写法是用来判断传入值是整数、小数还是字符串的,因为如果是整数,那么就包含1段数字;是浮点数就包含2段;如果不是这两种那就是字符串了。

    更新:忽然发现我有点没看清题意,这个需求的话直接把整个变量用str()括起来,然后用find就好了(不过也可以用正则表达式,网上也有很多教程可以参考,都是可以根据需求来改的



  • 好的,感谢!!!!



  • @zjxdiu 感谢!!!!!!


登录后回复