字串配对及移除-进阶功能 使用vb.net

我有一字串如下(范例字串)
dim temStr as string=AA ABB BBDDDJJ JEEEEGGG GGDDD
然后,会有一个配对子:为比如为DDD传进来

进到这个函数后会变成
前方的DDD被移除了
temStr =AAABBBBJJJEEEEGGGGGDDD
outputStr=DDD

注意点:这个字串,也有可能出现两次DDD,但只移除一个,移除前面或后面都可以

3个回答

 Module Module1

    Sub Main()
        Dim temStr As String = "AA ABB BBDDDJJ JEEEEGGG GGDDD"
        Dim s As String = "DDD"
        Dim outputStr As String = Nothing
        If InStr(temStr, s) <> -1 Then
            temStr = Left(temStr, InStr(temStr, s) - 1) + Right(temStr, Len(temStr) - Len(s) - InStr(temStr, s) + 1)
            outputStr = s
            Console.WriteLine(temStr)
        End If
    End Sub

End Module

weixin_40187983
weixin_40187983 请帮我看一下 为什么Left和Right会有问题呢
一年多之前 回复

To caozhy,请问这个是要写在Module才会没有吗?还是
图片说明

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 抱歉很久没用了,VB的Instr和C#的Indexof不同,https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/8460tsh1(v=vs.90)没有找到返回的是0,不是-1.
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复weixin_40187983: If InStr(temStr, s) <> -1 Then这里写错了,是If InStr(temStr, s) <> 0 Then,这样找不到就不会去替换,outputStr也是nothing
一年多之前 回复
weixin_40187983
weixin_40187983 请问,如果都没有匹配到的话 会报错 参数“Length”必须大于或等于 0。 比如我s=DDDDD 要怎么改呢
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复weixin_40187983: 也可以
一年多之前 回复
weixin_40187983
weixin_40187983 Microsoft.VisualBasic.Left 我查到,在form可以用这个了
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 或者你用mid函数或者substring代替。
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 我知道了,可能是窗体类的left right属性和它冲突了,你放在模块看看
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 提示信息是什么,这次我是vs里粘贴过来,测试过的啊。
一年多之前 回复
'下列函数使用VB.net而非VB6 
 Public Function substrPairRemove(ByRef outputStr As String, ByVal temStr As String) As String
        Return temStr.Remove(temStr.IndexOf(outputStr), outputStr.Length) '移除前面的配对子outputStr

        '若需移除后面的配对子,使用下列语句
        'Return temStr.Remove(temStr.LastIndexOf(outputStr), outputStr.Length)
End Function
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问