以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]字符串中的单引号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161584)

--  作者:天一生水
--  发布时间:2021/3/23 14:42:00
--  [求助]字符串中的单引号
老师好!
下图中,在数据表中筛选出[不通过]的单词时,由于里面可能包含带有单引号的短句,所以会报错。后面的加黑代码怎样修改?
谢谢!

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


Dim str As String = ""
Dim drs As List(Of DataRow)
drs = Tables("练习日志_Table1").DataTable.Select("标注 = true")
For Each dr As DataRow In drs
    str & = dr("不通过单词") & "、"
Next

Dim t As Table = Tables("数据表_Table1")
If str = ""
    t.Filter = ""
Else
    Dim Filter As String = "1=2"
    Dim sps() As Char = {",",",","、"}
    For Each s As String In str.split(sps)
        Dim st As String =s.Replace("\'","@").Replace("’","@")

        If st > "" Then
            Filter &= " or " & "单词" & " Like \'%" & st & "%\'"
        End If
    Next
msgbox(Filter)
    t.Filter = Filter.Replace("@","\'")
    
End If
Forms("练习日志").close
Forms("练习").open()

--  作者:有点蓝
--  发布时间:2021/3/23 14:46:00
--  
Dim st As String =s.Replace("\'","\'\'") 一个单引号替换为2个单引号
--  作者:天一生水
--  发布时间:2021/4/3 17:45:00
--  

蓝老师,针对“What’s the matter?” 这种带单引号的短句,条件表达式里使用通配符“%”,是可以了,但是会扩大其他单词的筛选范围。     

Filter &= " or " & "单词" & " Like \'%" & st & "%\'"

去掉表达式里的通配符“%”,又会找不到“What’s the matter?”。

Filter &= " or " & "单词" & " Like \'" & st & "\'"

这个怎样处理!


--  作者:有点蓝
--  发布时间:2021/4/5 20:14:00
--  
Filter &= " or 单词 Like \'" & st.Replace("\'","\'\'") & "\'"