String 将新字符串与旧字符串中包含的字符串分开

String 将新字符串与旧字符串中包含的字符串分开,string,vba,actuate,String,Vba,Actuate,我是编程新手,想问一下我是否可以分离下面的字符串。我正在使用visualbasic。基本上我有两个字符串: 字符串1:gOldStr=TEDDYBEARBLACKCAT 字符串2=gNewStr=BLACKCATWHITECAT 我想通过查找字符串1中的精确值来分隔字符串2 所以我有String2,它是string1=BLACKCAT的一部分 新的字符串2=WHITECAT 我试过下面的脚本,但它不工作的所有时间。能告诉我更好的逻辑吗?谢谢 For i=1 to Len(gOldStr)

我是编程新手,想问一下我是否可以分离下面的字符串。我正在使用visualbasic。基本上我有两个字符串:

字符串1:gOldStr=TEDDYBEARBLACKCAT

字符串2=gNewStr=BLACKCATWHITECAT

我想通过查找字符串1中的精确值来分隔字符串2

所以我有String2,它是string1=BLACKCAT的一部分

新的字符串2=WHITECAT

我试过下面的脚本,但它不工作的所有时间。能告诉我更好的逻辑吗?谢谢

For i=1 to Len(gOldStr)
        TempStr = Left$(gNewStr,i) 
        Ctr1 = InStr(gOldStr, TempStr)
        gTemporary = Mid$(gOldStr,Ctr1)

        gTemporary = Trim(gTemporary)

        Ctr2 = StrComp(gOldStr, gTemporary)
        If Ctr2=1 Then
                gTemporary2 = Replace(gNewStr,gTemporary,"")
                Exit For
        End If
Next i 

如果公共部分始终位于第一个部分的末尾和第二个部分的开头,则可以从末尾看,如下所示:

Dim strMatchedWord As String
For i=1 to Len(gOldStr)
    If i>Len(gNewStr) Then Exit For  'We need this to avoid an error
    Test1 = Right$(gOldStr, i)
    Test2 = Left$(gNewStr, i)

    If Test1 = Test2 Then
        strMatchedWord = Test1     'Store your match is Test1
    End If
Next
Debug.Print strMatchedWord 'Once the loop finishes it contains the longest match 

我修改了代码,使循环在遍历整个字符串之前不会退出。这样,它将在循环结束时为您提供最长的匹配。

如果公共部分始终位于第一个部分的末尾和第二个部分的开头,您可以从末尾看,如下所示:

Dim strMatchedWord As String
For i=1 to Len(gOldStr)
    If i>Len(gNewStr) Then Exit For  'We need this to avoid an error
    Test1 = Right$(gOldStr, i)
    Test2 = Left$(gNewStr, i)

    If Test1 = Test2 Then
        strMatchedWord = Test1     'Store your match is Test1
    End If
Next
Debug.Print strMatchedWord 'Once the loop finishes it contains the longest match 

我修改了代码,使循环在遍历整个字符串之前不会退出。这样,在循环结束时,您将获得最长的匹配。

欢迎使用Stackoverflow。使用
InStr
将搜索“TEDDYBEARBLACKCAT”中的“BLACKCATWHITECAT”。您需要将String1中的单词分隔开,然后将单词放入
数组
,或者为每个搜索词设置单独的字符串。嗨,Jean,谢谢您的回复。实际上,当我尝试执行Ctr1=InStr(gOldStr,gNewStr)时,它将返回0位置。虽然我也不能手动分离单词,因为这两个数据都是由用户输入的。@nopio它给你0,因为InStr检查整个gNewStr是否在gOldStr中,这不是因为它们不完全相同。请看下面我的答案…欢迎来到Stackoverflow。使用
InStr
将搜索“TEDDYBEARBLACKCAT”中的“BLACKCATWHITECAT”。您需要将String1中的单词分隔开,然后将单词放入
数组
,或者为每个搜索词设置单独的字符串。嗨,Jean,谢谢您的回复。实际上,当我尝试执行Ctr1=InStr(gOldStr,gNewStr)时,它将返回0位置。虽然我也不能手动分离单词,因为这两个数据都是由用户输入的。@nopio它给你0,因为InStr检查整个gNewStr是否在gOldStr中,这不是因为它们不完全相同。请看下面我的答案…您好@ib11谢谢您的输入,是的,这也很有效。但是我想如果字符串有重复字符,这个方法也不会得到正确的字符串。示例:字符串1:AAADEFDEF字符串2:DEFDEFJJWWWOKAY。我更新了代码。现在,它遍历整个字符串,如果找到匹配项,它将存储它,因此最后您将得到最长的一个。您好@ib11谢谢,它工作得非常好。非常感谢,太好了。请不要忘记投票并接受答案:Hi@ib11谢谢你的投入,是的,这也很有效。但是我想如果字符串有重复字符,这个方法也不会得到正确的字符串。示例:字符串1:AAADEFDEF字符串2:DEFDEFJJWWWOKAY。我更新了代码。现在,它遍历整个字符串,如果找到匹配项,它将存储它,因此最后您将得到最长的一个。您好@ib11谢谢,它工作得非常好。非常感谢,太好了。请不要忘记投票并接受答案: