51Testing软件测试论坛

标题: QTP中对textstream的操作 [打印本页]

作者: alex_topgun    时间: 2012-10-23 00:14
标题: QTP中对textstream的操作
想要脚本实现以下的功能:找到文本中以abcd开头的长度为n的字符串,并且将其删除。

请各位大侠指点!
作者: xjwldlover    时间: 2012-10-23 09:28
使用split(exp,delimiter)分割textStream(arr),然后将分割的字符头去掉n位(不足N的,和text开头、结尾是abcd的需要考虑),然后join(arr)字符
作者: alex_topgun    时间: 2012-10-23 23: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
你看下,如果有错误的地方自己修改一下

  1. str = "abcd1234567890abcdjgls3213212321aab3213212cdabcdabcdsabcdabcd"
  2. WScript.Echo MoveStr(str,"abcd",8,0)
  3. '函数功能:删除制定字符后的N位字符(不足N位,就有几位删几位)
  4. 'Input:strExp-待修改字符串;strDelimiter-分隔符;strMoveLen-删除位数
  5. 'output:更新后的字符串
  6. Function MoveStr(byval strExp,byval strDelimiter,byval strMoveLen,byval blnContain)
  7.     Dim strArr
  8. '   使用分隔符strDelimiter分解文本strExp
  9.     strArr = Split(strExp,strDelimiter)
  10.    
  11.     Dim resDelimiter
  12.     If blnContain Then
  13.         resDelimiter = ""
  14.     Else
  15.         resDelimiter = strDelimiter
  16.     End If
  17.    
  18.     Dim i
  19.     For i = 0 To UBound(strArr)
  20. '       更新取被分解的数组元素str,删除N位之后的字符串
  21.         strArr(i) = Mid(strArr(i),strMoveLen+1-Len(strDelimiter),Len(strArr(i)))
  22.     Next
  23. '    重新使用原来的分隔符组合该串
  24.     MoveStr = Join(strArr,resDelimiter)
  25. End Function
复制代码

作者: 黑羽祭    时间: 2012-10-25 09:33
回复 1# alex_topgun


    需要这么麻烦么?
每个判断下是否符合条件应该就行了吧。如:   
str = "abcde123456789"
if Len(str) = n and left(str,5) = "abcde" Then
     '删除动作
End if




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2