以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]为何文本替换替换不了?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=152161)

--  作者:小美菜
--  发布时间:2020/7/9 8:09:00
--  [求助]为何文本替换替换不了?
tStr =“中外合作办学>本科一批B政治学类(外交学)()” ,这个文本 用xStr = tStr.Replace(“中外合作办学>”,""), xStr与原tStr 一样,因为需要替换的文本很多,都没有替换下来,搞一天了,无任何进展
--  作者:linyunu
--  发布时间:2020/7/9 8:27:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:b32ba2b8-c388-48dd-b9f9-2dfe33f4d64b.png
图片点击可在新窗口打开查看



测试正常,你的代码怎么写的

--  作者:小美菜
--  发布时间:2020/7/9 8:31:00
--  
Dim tStr As String = dr("其它说明")
    \'Dim 
    If tSTr.Trim <> "" Then
    Output.Show(tStr & ":正在处理..." & i & "/" & n & "lsthas.Count:" & lsthas.Count)
        For Each xStr As String In lsthas
            If xStr <> "" Then
                dr("其它说明") = tStr.Replace(xStr,"")
                Application.DoEvents()
            End If
        Next
        i = i + 1
    End If


--  作者:小美菜
--  发布时间:2020/7/9 8:45:00
--  
还是有半角全角问题,唉,怎么搞都替换不了,用窗口跟踪,有10条符合记录的,它处理2~6条,你重新来,它又处理几条,搞好几次,才能处理完,带字母字符的几乎处理不了


--  作者:linyunu1
--  发布时间:2020/7/9 9:42:00
--  
请上传完整一些的代码  和想实现的效果
--  作者:有点蓝
--  发布时间:2020/7/9 9:54:00
--  
把字符串全部转换为半角再替换:http://www.foxtable.com/webhelp/topics/1621.htm

Dim tStr As String = StrToNarrow(dr("其它说明"))

--  作者:小美菜
--  发布时间:2020/7/9 20:34:00
--  
蓝老师,转成半角是可以一次改完,但余下的顿号变问号,转全角,还是问号,怎么办?


--  作者:有点蓝
--  发布时间:2020/7/9 20:39:00
--  
那就还是按全角字符替换:http://www.foxtable.com/webhelp/topics/1273.htm
--  作者:小美菜
--  发布时间:2020/7/10 9:57:00
--  
没办法,做了下面代码替代
Dim iStr As String =  Args(0)\'
Dim sStr As String = Args(1)\'
Dim dStr As  String = ""
If  Args.Length > 2 Then dStr =  Args(2)\'
iStr = iStr.Trim()
sStr = sStr.Trim()
dStr = dStr.Trim()
Dim iStrWd As String = StrToWide(iStr)
If sStr = "" Then  Return iStr
Dim asStr() As String = sStr.Split(iif(sStr.Contains("§"),"§","|" ))
Dim adStr() As String = dStr.Split(iif(dStr.Contains("§"),"§","|" ))
For i As Integer = 0 To ubound(asStr)
    asStr(i) = asStr(i).Trim
    Dim sStrWd As String = StrToWide(asStr(i))
    Dim idx As Integer = iStrWd.IndexOf(sStrWd)
    Dim l As Integer = sStrWd.Length
    If idx< 0 Then Continue For \' Return iStr
    If l > 0 Then
        Dim xStr As String = iStr.SubString(idx,l)
        iStr = iStr.Replace(xStr,"")
        If adStr(i) IsNot Nothing Then
            adStr(i) = adStr(i).Trim
            If  adStr(i).Length > 0 Then iStr = iStr.Insert(idx, adStr(i))
        End If
    End If
Next
Return iStr