之前用vbs写过的一大段代码,现要用Java重写,工作量非常大,原想用正则表达式的方式去实现,但当代码中过于复杂时,正则表达式还是达不到效果,于是用vbs的土办法编写一个先将其中Replace转换成Java的replace,代码如下:
Function vbsToJava_Replace(content)
content = Replace(content, "replace", "Replace")
'替换Replace
startA = instr(content,"Replace(")
do while startA>0
findCount = 1
startA1 = startA + len("Replace(")
endA1 = startA
endA2 = startA
do while findCount>0 and (endA1 >0 or endA2>0)
endA1 = instr(startA1, content, "(")
do while mid(content, endA1 + 1, 1)="""" and mid(content, endA1 - 1, 1)=""""
endA1 = endA1 + 1
endA1 = instr(endA1, content, "(")
loop
endA2 = instr(startA1, content, ")")
do while mid(content, endA2 + 1, 1)="""" and mid(content, endA2 - 1, 1)=""""
endA2 = endA2 + 1
endA2 = instr(endA2, content, ")")
loop
If (endA1>0 and endA2>0) Then
If (endA1<endA2) Then
findCount = findCount + 1
startA1 = endA1 + 1
Else
findCount = findCount - 1
startA1 = endA2 + 1
End If
ElseIf (endA1>0) Then
findCount = findCount + 1
startA1 = endA1 + 1
ElseIf (endA2>0) Then
findCount = findCount - 1
startA1 = endA2 + 1
End If
loop
endA = startA1
tmpStr1 = mid(content, startA, endA-startA)
Wscript.echo tmpStr1
tmpStr2 = tmpStr1
tmpStr3 = ""
startA2 = instr(tmpStr2, "Replace(")
do while startA2>0
preStr = ""
nextStr = ""
If startA2<>1 Then
preStr = Trim(mid(tmpStr2, 1, startA2 -1))
End If
startA2 = startA2 + len("Replace(")
endA2tmp = len(tmpStr2)
do
endA2 = instrRev(tmpStr2, ",", endA2tmp)
tmpStr2tmp = mid(tmpStr2, endA2, len(tmpStr2) - endA2)
yhCount = 0
yhHas = instr(tmpStr2tmp, """")
do while yhHas>0
yhCount = yhCount + 1
yhHas = instr(yhHas + 1, tmpStr2tmp, """")
loop
endA2tmp = endA2 - 1
loop while (yhCount mod 2 =1)
If (endA2>0) Then
do
endA2 = endA2 - 1
endA2 = instrRev(tmpStr2, ",", endA2)
tmpStr2tmp = mid(tmpStr2, endA2, len(tmpStr2) - endA2)
yhCount = 0
yhHas = instr(tmpStr2tmp, """")
do while yhHas>0
yhCount = yhCount + 1
yhHas = instr(yhHas + 1, tmpStr2tmp, """")
loop
loop while (yhCount mod 2 =1)
End If
If (len(preStr)>0) Then
If (endA2>0) Then
do
endA2 = endA2 - 1
endA2 = instrRev(tmpStr2, ",", endA2)
tmpStr2tmp = mid(tmpStr2, endA2, len(tmpStr2) - endA2)
yhCount = 0
yhHas = instr(tmpStr2tmp, """")
do while yhHas>0
yhCount = yhCount + 1
yhHas = instr(yhHas + 1, tmpStr2tmp, """")
loop
loop while (yhCount mod 2 =1)
End If
End If
If (endA2>0) Then
tmpStr21 = mid(tmpStr2, startA2, endA2 - startA2)
tmpStr3 = ".replace(" & mid(tmpStr2, endA2+1, len(tmpStr2)-endA2) & tmpStr3
tmpStr2 = preStr & tmpStr21
'Wscript.echo tmpStr3
End If
startA2 = instr(tmpStr2, "Replace(")
loop
tmpStr3 = tmpStr2 & tmpStr3
Wscript.echo tmpStr1 & vbcrlf & tmpStr3
content = Replace(content, tmpStr1, tmpStr3)
startA = instr(content,"Replace(")
loop
vbsToJava_Replace = content
End Function