用正则替换吧,写个思路给你$regex=ObjCreate("vbscript.regexp")
$regex.global=1
$regex.multiline=0
$str="201301011201" & @CRLF & _
"201301011515" & @CRLF & _
"201301020706" & @CRLF & _
"201301021530" & @CRLF & _
"201301030606" & @CRLF & _
"201301031630"
MsgBox(0,"",$str)
$input="201301021135"
For $n=StringLen($input) To 1 Step -1
$tmp=StringLeft($input,$n)
$ptn="(("&$tmp&")(.*?)\n)+"
$regex.pattern=$ptn
If $regex.test($str) Then
$ar=$regex.execute($str)
$arr=StringSplit($ar(0).value,@CRLF,1)
For $i=1 To UBound($arr)-2
If Number($input)<Number($arr[$i]) Then
$arr[$i]=$input&@crlf&$arr[$i]
ExitLoop
EndIf
Next
$tmp=""
For $i=1 To UBound($arr)-2
$tmp&=$arr[$i]&@CRLF
Next
$str=StringRegExpReplace($str,$ptn,$tmp)
ExitLoop
EndIf
Next
$regex=Null
MsgBox(0,"",$str)
用不太好au3的正则,用vbs的代替一下
原理:从右向左逐渐缩短输入内容的长度,寻找前面内容匹配的行组合,提取出来后,循环这些行,把数据插入到对应位置,再替换回匹配的位置
局限:对于楼主这种递增数据可用 |