以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 字符串处理难题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173851) |
-- 作者:czy66ds -- 发布时间:2021/12/20 8:18:00 -- 字符串处理难题 设字符串 S="A|a,B|b" 希望处理成这个样子: "([年代] = A and [季节] = a) or ([年代] = B and [季节] = b)" 可以办到吗?
|
-- 作者:有点蓝 -- 发布时间:2021/12/20 8:45:00 -- Dim S As String="A|a,B|b" Dim filter As String = "1=2 " For Each s1 As String In s.Split(",") Dim ss() As String = s1.Split("|") filter = filter & CExp(" Or ([年代] = {0} And [季节] = {1})",ss(0),ss(1)) Next msgbox(filter)
[此贴子已经被作者于2021/12/20 11:58:11编辑过]
|
-- 作者:czy66ds -- 发布时间:2021/12/20 11:22:00 -- 谢谢,版主提供的处理方式太美妙了,CEXP函数也太美妙了。 还有一个问题,运行楼上代码的结果是: 1=1 Or ([年代] = A And [季节] = a) Or ([年代] = B And [季节] = b) 如何将Or 改为 and 呢? |
-- 作者:有点蓝 -- 发布时间:2021/12/20 11:58:00 -- 搞错了 Dim filter As String = "1=1 " 改为 Dim filter As String = "1=2 "
|
-- 作者:czy66ds -- 发布时间:2021/12/20 12:49:00 -- 实用上 起始条件filter可能不是Dim filter As String = "1=2 " 而是另一个参与选择的条件, 比如 Dim filter As String = "[日期] = \'2021-12-20\'" 那么上述的 OR就需改为AND
|
-- 作者:有点蓝 -- 发布时间:2021/12/20 13:37:00 -- 先正常生成filter ,最后再和其它条件合并 Dim S As String="A|a,B|b" Dim filter As String = "1=2 " For Each s1 As String In s.Split(",") Dim ss() As String = s1.Split("|") filter = filter & CExp(" Or ([年代] = {0} And [季节] = {1})",ss(0),ss(1)) Next filter = "(" filter & ") and [日期] = \'2021-12-20\'" msgbox(filter) |