alex_topgun 发表于 2012-10-23 00:14:42

QTP中对textstream的操作

想要脚本实现以下的功能:找到文本中以abcd开头的长度为n的字符串,并且将其删除。

请各位大侠指点!

xjwldlover 发表于 2012-10-23 09:28:17

使用split(exp,delimiter)分割textStream(arr),然后将分割的字符头去掉n位(不足N的,和text开头、结尾是abcd的需要考虑),然后join(arr)字符

alex_topgun 发表于 2012-10-23 23:27:27

回复 2# xjwldlover


    能否把详细的函数应该如何使用帮忙写一下。

是不是arr就是"abcd",split(exp,delimeter)里的exp又应该是什么?delimeter就是n的值吗?join(arr)又应该如何使用?

另外把这个以"abcd"开头的长度为n的字符串从文本文件中删除应该如何实现?

   在此之前,我定义了如下一些对象:
Dim FS, File1, File1Path
   File1Path = "C:/aa.txt"
   Set FS = CreateObject(File.System.Scripting)
   Set File1 = FS.GetFile(File1Path).OpenAsTextStream
   目的就是为了实现在File1里找到以"abcd"开头的长度为n的字符串,并且将其删除。这个字符串的特点是以abcd开头且长度为n,但是abcd之后的其余字符在每次文本文件生成后是变化的,不是固定的。

非常感谢!!

xjwldlover 发表于 2012-10-24 09:16:47

你看下,如果有错误的地方自己修改一下
str = "abcd1234567890abcdjgls3213212321aab3213212cdabcdabcdsabcdabcd"
WScript.Echo MoveStr(str,"abcd",8,0)
'函数功能:删除制定字符后的N位字符(不足N位,就有几位删几位)
'Input:strExp-待修改字符串;strDelimiter-分隔符;strMoveLen-删除位数
'output:更新后的字符串
Function MoveStr(byval strExp,byval strDelimiter,byval strMoveLen,byval blnContain)
    Dim strArr
'   使用分隔符strDelimiter分解文本strExp
    strArr = Split(strExp,strDelimiter)
   
    Dim resDelimiter
    If blnContain Then
      resDelimiter = ""
    Else
      resDelimiter = strDelimiter
    End If
   
    Dim i
    For i = 0 To UBound(strArr)
'       更新取被分解的数组元素str,删除N位之后的字符串
      strArr(i) = Mid(strArr(i),strMoveLen+1-Len(strDelimiter),Len(strArr(i)))
    Next
'    重新使用原来的分隔符组合该串
    MoveStr = Join(strArr,resDelimiter)
End Function

黑羽祭 发表于 2012-10-25 09:33:05

回复 1# alex_topgun


    需要这么麻烦么?
每个判断下是否符合条件应该就行了吧。如:   
str = "abcde123456789"
if Len(str) = n and left(str,5) = "abcde" Then
   '删除动作
End if
页: [1]
查看完整版本: QTP中对textstream的操作