以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  两个字符串如何快速判断是否包含其中部份  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71701)

--  作者:happyft
--  发布时间:2015/7/16 14:41:00
--  两个字符串如何快速判断是否包含其中部份

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

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

 

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

 

谢谢!

 


--  作者:大红袍
--  发布时间:2015/7/16 14:43:00
--  
 必须分隔str2,然后循环str2
[此贴子已经被作者于2015/7/16 14:43:46编辑过]

--  作者:大红袍
--  发布时间:2015/7/16 14:52:00
--  

Dim str1 As String = "业务部.经理,业务部.主管,生产部.经理,生产部.文员"

Dim str2 As String = "业务部.主管,生产部.经理,123"

Dim ary() As String = str1.Split(",")
Dim flag As Boolean = True
For Each s As String In str2.Split(",")
    If Array.IndexOf(ary,s) = -1 Then
        flag = False
        Exit For
    End If
Next
msgbox(flag)


--  作者:HappyFt
--  发布时间: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

这样写吗?


--  作者:大红袍
--  发布时间:2015/7/16 14:54:00
--  
 看3楼
--  作者:HappyFt
--  发布时间:2015/7/16 15:24:00
--  

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

 


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

 

dim cns as string

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

 

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


--  作者:大红袍
--  发布时间:2015/7/16 15:29:00
--  

 加一个辅助列,去编写datacolchanged事件,得到是否存在,这样利于搜索查询。

 

 不然,就必须循环每一行才能得到结果。


--  作者:HappyFt
--  发布时间: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连接效率是不是很低?



--  作者:大红袍
--  发布时间:2015/7/16 17:20:00
--  

 str1和str2的比较,是一行一行的比较,还是一整列合并以后比较?

 

 如果是一整列,可以用8楼的代码


--  作者:HappyFt
--  发布时间:2015/7/16 17:24:00
--  

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