《软件自动化测试成功之道》节选11 - 常用脚本函数的封装

来源:互联网 发布:网络歌手怎么注册 编辑:程序博客网 时间:2024/05/01 01:26

《软件自动化测试成功之道》节选11 - 常用脚本函数的封装

http://www.china-pub.com/196509

 

 

 

 

项目回顾>>>

2008-5-29

今天发现很多地方需要使用到字符串的操作,而DelphiScipt的字符串操作函数不大好用,因此有必要把常用的一些字符串操作封装成函数,已备调用。

 

1 替换字符串

//.............................................................................

// 目的:替换字符串

// 输入参数:

//          Str:待替换的字符串

//          StrTobeRep:需要被替换掉的字符串

//          StrRep:替换的字符串

// 返回结果:替换后的字符串

// 注意事项:

// 作者:陈能技

// 日期:2008-5-29

//.............................................................................

Function String_RePlace(Str,StrTobeRep,StrRep);

begin

  Str := dotNET.System_Text.StringBuilder.zctor(Str);

  Str := Str.RePlace_2(StrTobeRep,StrRep).ToString;

  Result := Str;

end;

Procedure Test_String_RePlace;

  Var Str : OleVariant;

begin

  Str := String_RePlace('D:/Code/FileSelctionDialog/FileSelctionDialog/bin/Debug','D:','|桌面|我的电脑|本地磁盘 (D:)');

  Log.Message(String_RePlace(Str,'/','|'));

end;

这里使用的是.NET类库中的StringBuilder对象,另外,也可以使用Utilities对象中的StringReplace来替换字符串:

Procedure Test_String_RePlace_2;

  Var Str : OleVariant;

begin

  Str := Utilities.StringReplace('D:/Code/FileSelctionDialog/FileSelctionDialog/bin/Debug','D:','|桌面|我的电脑|本地磁盘 (D:)',1);

  Log.Message(Utilities.StringReplace(Str,'/','|',1));

end;

其中StringReplace的第三个参数是一个标志位,可以使用以下两个值:

1:是否替换所有。如果没有使用该值,则仅替换找到的第一个。

2:是否大小写敏感。使用该值表示大小写不敏感地匹配,不使用该值则表示大小写敏感。

2)分割字符串

//.............................................................................

// 目的:分割字符串

// 输入参数:

//          Str:待替换的字符串

//          Separator:分割符

// 返回结果:分割后的字符串保存在数组并返回

// 注意事项:

// 作者:陈能技

// 日期:2008-5-29

//.............................................................................

Function String_Split(Str,Separator);

  Var StringArray,Count ,I: OleVariant;

begin

  StringArray := CreateVariantArray(0,0);

  Count := BuiltIn.GetListCount(Str, Separator);

  VarArrayRedim(StringArray,Count);

  For I:=0 to Count - 1 do

  begin

    StringArray[I] := BuiltIn.GetListItem(Str , I , Separator);

  end;

  Result := StringArray;

end; 

Procedure Test_String_Split;

  Var StringArray,I : OleVariant;

begin

  StringArray := String_Split('D:/Code/FileSelctionDialog/FileSelctionDialog/bin/Debug','/');

  For I := 0 to VarArrayHighBound(StringArray,1)-1 do

  begin

    Log.Message(StringArray[I]);

  end;

end;

3)读取部分字符串

//.............................................................................

// 目的:读取字符串中的一部分

// 输入参数:

//          Str:待读取的字符串

//          StartIndex:开始读取的Index位置

//          EndIndex:结束读取的Index位置

// 返回结果:读取到的部分字符串

// 注意事项:

// 作者:陈能技

// 日期:2008-5-29

//.............................................................................

Function String_SubString(Str,StartIndex,EndIndex);

begin

  Str := dotNET.System_Text.StringBuilder.zctor(Str).ToString;

  Str := Str.SubString(StartIndex,EndIndex).ToString;

  Result := Str;   

end;

Procedure Test_String_SubString;

begin

  Log.Message(String_SubString('1234567890',0,2));

end;

这里使用的是.NET类库中的StringBuilder对象的SubString函数,另外,也可以使用使用DelphiScriptCopy函数来读取字符串中的一部分:

// 使用DelphiScriptCopy函数来读取字符串中的一部分

Procedure Test_String_SubString_2;

  var Str : OleVariant;

begin

  Str:='1234567890'; 

  Log.Message(Copy(Str,2,5)); 

  Log.Message(Copy(Str,2, 20));

  Log.Message(Copy(Str,-2,3));

  Log.Message(Copy(Str,2,0));

end;

4)查找字符串

查找字符串可以使用.NETString对象的Contains函数,用于确定是否包含指定的字符串:

//.............................................................................

// 目的:查找字符串是否包含指定的字符串

// 输入参数:

//          Str:待查找的字符串

//          SubStr:被查找的字符串

// 返回结果:

//          True:包含指定的字符串

//          False:不包含指定的字符串

// 注意事项:

// 作者:陈能技

// 日期:2008-5-29

//.............................................................................

Function String_Contains(Str,SubStr);

begin

  Str := dotNET.System_Text.StringBuilder.zctor(Str).ToString;

  Result := Str.Contains(SubStr);

end;

Procedure Test_String_Contains;

begin

   Log.Message(String_Contains('01234567890','456'));   

end;

另外,也可以使用DelphiScript提供的Pos函数来判断是否出现指定的字符串,如果包含,则返回第一个出现的位置;如果不包含,则返回False值,如下代码所示:

//.............................................................................

// 目的:查找字符串是否包含指定的字符串

// 输入参数:

//          Str:待查找的字符串

//          SubStr:被查找的字符串

// 返回结果:

// 注意事项:

// 作者:陈能技

// 日期:2008-5-29

//.............................................................................

Function String_Contains_2(Str,SubStr);

  Var Index :OleVariant;

begin

  Result := False;

  Index := Pos(SubStr,Str);

  IF Index > 0 then

    Result := Index;

end;

Procedure Test_String_Contains_2;

begin

   Log.Message(String_Contains_2('01234567890','456'));   

end;

5)匹配开头字符串

//.............................................................................

// 目的:判断字符串是否以指定的字符串开头

// 输入参数:

//          Str:待查找的字符串

//          SubStr:开头的字符串

// 返回结果:

//          True:字符串以指定的字符串开头

//          False:字符串不以指定的字符串开头

// 注意事项:

// 作者:陈能技

// 日期:2008-5-29

//.............................................................................

Function String_StartsWith(Str,SubStr);

begin

  Str := dotNET.System_Text.StringBuilder.zctor(Str).ToString;

  Result := Str.StartsWith(SubStr);

end;

Procedure Test_String_StartsWith;

begin

   Log.Message(String_StartsWith('01234567890','123'));   

end;

6)匹配结尾字符串

//.............................................................................

// 目的:判断字符串是否以指定的字符串结尾

// 输入参数:

//          Str:待查找的字符串

//          SubStr:结尾的字符串

// 返回结果:

//          True:字符串以指定的字符串结尾

//          False:字符串不以指定的字符串结尾

// 注意事项:

// 作者:陈能技

// 日期:2008-5-29

//.............................................................................

Function String_EndsWith(Str,SubStr);

begin

  Str := dotNET.System_Text.StringBuilder.zctor(Str).ToString;

  SubStr := dotNET.System_Text.StringBuilder.zctor(SubStr).ToString; 

  Result := Str.EndsWith(SubStr);

end;

Procedure Test_String_EndsWith;

begin

   Log.Message(String_EndsWith('01234567890','1230'));   

end;

《软件自动化测试成功之道》节选11 - 常用脚本函数的封装

http://www.china-pub.com/196509

原创粉丝点击