遇到了一个比较棘手的问题,向高手们请教给定一个模版字符串,其中可能含有'%1','%2'...'%6'的一个或几个,且'%1','%2'...'%6'出现的顺序不定再给定另一个与这个模版相匹配的字符串现在想要从匹配模版的这个字符串提取出对应'%1','%2'...'%6'的字串放在6个相应的变量里,这个应该怎么做?不知道我有没有说清楚,给个例子:给定模版字符串:“%1 - %3 - %2”,相应的变量是var1,var3,var2给定与之匹配的字符串:“str1 - str3 - str2”现在想要的功能是取出'str1',赋给变量var1取出'str3',赋给变量var3取出'str2',赋给变量var2我只有这么多分,全拿出来了,解决了就全部奉上,先谢谢各位了

热心网友

有个问题:会不会出现以下情况,约定 %1 %2 %3 %4-ABC BCD CDE DEF那么,对于字符串AABCDEFF 是作为%1,%2,%3,%4 全部符合,还是%1,%4符合另外还有拆解成 AA,%2,EEF 这样的类型的,,这些该怎么处理?补充我delphi不会写,用VB 代码表示,,看注释应该很容易理解了Option ExplicitPublic VarTem(1 To 6) As StringPublic Var(1 To 6) As VariantPrivate Sub Init()Dim i As LongVarTem(1) = "ABC"VarTem(2) = "BCD"VarTem(3) = "CDE"VarTem(4) = "DEF"VarTem(5) = "EFG"VarTem(6) = "FGH"For i = 1 To 6 Var(i) = ""NextEnd SubPublic Function ExplodeVar(ByVal strText As String, Var() As Variant) As Long'strText 输入的字符串'Var() 返回的参数列表'函数功能: 将输入字符串的内容和VarTem(6)的内容比较,如果匹配,就复制VarTem(6)对应项目的值到Var()的对应项,Var()里不为0的是成功拆解出来的值'函数返回成功拆解出来的变量数Dim i As Long '循环变量Dim Complete As Boolean '分析完成标志Dim Temp As Variant '暂存'初始化Call InitComplete = False'拆解字符串'考虑到前后次序的不定性,只能全部测试一次,并且这里假定同一个项目只出现一次For i = 1 To 6 Var(i) = InStr(1, strText, VarTem(i)) '取得每个匹配项的位置Next '根据Var(i)的值排序,While Not CompleteComplete = True For i = 1 To 5 If (Var(i) Var(i + 1)) Then Temp = Var(i): Var(i) = Var(i + 1): Var(i + 1) = Temp Temp = VarTem(i): VarTem(i) = VarTem(i + 1): VarTem(i + 1) = Temp 'VarTem根据Var同步改变顺序 Complete = False End If NextWend'现在判断是否有重叠'如果允许重叠,这里就不需要了Temp = Var(1)For i = 1 To 5 If (Temp + Len(VarTem(i))) Var(i + 1) And Temp 0 Then Var(i + 1) = 0 Temp = Var(i) Else Temp = Var(i + 1) End IfNext'返回成功拆解的变量数Dim Count As LongCount = 0For i = 1 To 6 If Var(i) 0 Then Count = Count + 1 Var(i) = VarTem(i) Else Var(i) = "" End If NextExplodeVar = CountEnd Function。