以文本方式查看主题
- 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 外不知道还能用什么运算符效率更高?
|