Foxtable(狐表)用户栏目专家坐堂 → 两个字符串如何快速判断是否包含其中部份


  共有2801人关注过本帖树形打印复制链接

主题:两个字符串如何快速判断是否包含其中部份

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
两个字符串如何快速判断是否包含其中部份  发帖心情 Post By:2015/7/16 14:41:00 [显示全部帖子]

字符串 str1 = "业务部.经理,业务部.主管,生产部.经理,生产部.文员"

字符串 str2 = "业务部.主管,生产部.经理"

 

如何写代码判断:字符串str2中的每一个部门角色(用逗号,分隔)至少有一个不在字符串 str1的部门角色中,或者全部都在 str1的部门角色中?

 

谢谢!

 


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/7/16 14:53:00 [显示全部帖子]

  Dim A As String
    For Each rol As String In str1.split(",")

      if str2.Contains(rol) then

         A = "包含"

      else

         A = “不包含”

      exit for

      end if
    Next

这样写吗?


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/7/16 15:24:00 [显示全部帖子]

谢谢!但如果是这样类似的判断用在表达式中就不知道怎么写了,比如下图

 


图片点击可在新窗口打开查看此主题相关图片如下:360截图20150716151535194.jpg
图片点击可在新窗口打开查看

 

dim cns as string

cns = DataTables("表A").GetComboListString("可查看列","可查看列 is not null and (str2中的部门角色至少有一个不在str1中)

 

后面红色那部门要怎么写代码才能表达出来?谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/7/16 17:14:00 [显示全部帖子]

如果不用增加辅助列,直接用下面的代码先将str2的值拆分用Not like运算符连接起来再用在下面的表达式中是否可行?'---将用户及角色用or运算符连接起来
Dim flt As String
For Each rol As String In str2.split(",")  '连接当前用户的所有角色
    flt = flt & " or str1 Not Like '%" & rol & "%'"
Next

flt = "A " & flt

 

dim cns as string

cns = DataTables("表A").GetComboListString("可查看列","可查看列 is not null and (str1 not like " & flt & ")")

 

用or连接效率是不是很低?



 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/7/16 17:24:00 [显示全部帖子]

是一行一行的比较,只是出了用like 或者 not like 外不知道还能用什么运算符效率更高?


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/7/16 19:34:00 [显示全部帖子]

谢谢!

那如果不存在str2列要怎么办呢,即只有一个全局变量,其值为“mis.管理员,业务部.经理”是固定的

 

而现在表A中只有两列:可查看列和str1,有很多行

可查看列        str1

第一列          mis.管理员,业务部.经理,生产部.经理

第二列          mis.管理员,生产部.经理

第三列          业务部.经理,生产部.经理

。。。

 

cns = DataTables("sqtb").GetComboListString("可查看列","可查看列 is not null and (str1中的值包括了全局变量中的所有部门和角色

 

结果要 cns = “第一列”

因为只有第一行的str1包括了“mis.管理员”和“业务部.经理”,第二,三行都只包括其中的一个部门及角色所以不符合。

 

红色那部份有没有办法直接用表达式写出来?

 


 回到顶部