LoadRunner截取字符串操作

在使用LoadRunner winsockets协议写脚本,遇到下面问题:

在接收到的查询数据库的结果中我要取红色部份用于下面的select

recv buf60 769
"\x01\x00\x00\x01"
"\bK"
"\x00\x00\x02\x03"
"def\tsystem_db\n"
"tb_tsbinfo\n"
"tb_tsbinfo\fTskGuidebook\fTskGuidebook\f?"
"\x00"
"\v"
"\x00\x00\x00\x03"
" "
"\x00\x00\x00\x00"
"A"
"\x00\x00\x03\x03"
"def\tsystem_db\n"
"tb_tsbinfo\n"
"tb_tsbinfo"
"\x07"
"Work_ID"
"\x07"
"Work_ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03\x00\x00\x00\x00\x00"
"G"
"\x00\x00\x04\x03"
"def\tsystem_db\n"
"tb_tsbinfo\n"
"tb_tsbinfo\n"
"WorkNum_ID\n"
"WorkNum_ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03\x00\x00\x00\x00\x00"
"I"
"\x00\x00\x05\x03"
"def\tsystem_db"
"\x10"
"tb_tskdetailinfo"
"\x10"
"tb_tskdetailinfo\bBatch ID"
"\x02"
"ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03"
"!"
"\x00\x00\x00\x00"
"Q"
"\x00\x00\x06\x03"
"def\tsystem_db"
"\x10"
"tb_tskdetailinfo"
"\x10"
"tb_tskdetailinfo\tBatchName\tBatchName\f!"
"\x00"
","
"\x01\x00\x00\xfd\x00\x00\x00\x00\x00"
"C"
"\x00\x00\x07\x03"
"def\tsystem_db\n"
"tb_tsbinfo\n"
"tb_tsbinfo\bBlock_ID\bBlock_ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03\x00\x00\x00\x00\x00"
"I"
"\x00\x00"
"\b"
"\x03"
"def\tsystem_db\ftb_blockinfo\ftb_blockinfo\tBlockName\tBlockName\f!"
"\x00\x96\x00\x00\x00\xfd\x00\x00\x00\x00\x00"
"G"
"\x00\x00"
"\t"
"\x03"
"def\tsystem_db\ftb_blockinfo\ftb_blockinfo\bModel_ID\bModel_ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03\x00\x00\x00\x00\x00\x05\x00\x00"
"\n"
"\xfe\x00\x00"
"\""
"\x00\x15\x00\x00"
"\v"
"\x01"
"5"
"\x01"
"4"
"\x01"
"7"
"\x01"
"7"
"\x04"
"8227"
"\x01"
"6"
"\x03"
"DAY"
"\x01"
"3"
"\x15\x00\x00"
"\f"
"\x01"
"5"
"\x01"
"4"
"\x01"
"7"
"\x01"
"7"
"\x04"
"8227"
"\x01"
"5"
"\x03"
"NEW"
"\x01"
"3"
"\x18\x00\x00"
"\r"
"\x01"
"6"
"\x01"
"1"
"\x01"
"5"
"\x01"
"5"
"\x04"
"0502"
"\x01"
"4"
"\x06"
"鏁板瓧"
"\x01"
"2"
"\x1a\x00\x00\x0e\x01"
"9"
"\x01"
"1"
"\x02"
"11"
"\x02"
"11"
"\x04"
"1601"
"\x01"
"4"
"\x06"
"鏁板瓧"
"\x01"
"2"
"\x1a\x00\x00\x0f\x01"
"9"
"\x01"
"1"
"\x02"
"11"
"\x02"
"11"
"\x04"
"1601"
"\x01"
"1"
"\x06"
"鍦板潃"
"\x01"
"2"
"\x05\x00\x00\x10\xfe\x00\x00"
"\""
"\x00" send buf61 54
"2"
"\x00\x00\x00\x03"
"select `BlockNO` from `tb_blockinfo` where `ID`=6" 写关联语句: lrs_save_searched_string("socket3",NULL,"Block_ID","LB/BIN=\\x01","RB/BIN=\\x03",8,0,-1); 执行发现关联的值不对。检查,发现传回的结果为: "\x01\x00\x00\x01"
"\bK"
"\x00\x00\x02\x03"
"def\tsystem_db\n"
"tb_tsbinfo\n"
"tb_tsbinfo\fTskGuidebook\fTskGuidebook\f?"
"\x00"
"\v"
"\x00\x00\x00\x03"
" "
"\x00\x00\x00\x00"
"A"
"\x00\x00\x03\x03"
"def\tsystem_db\n"
"tb_tsbinfo\n"
"tb_tsbinfo\aWork_ID\aWork_ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03\x00\x00\x00\x00\x00"
"G"
"\x00\x00\x04\x03"
"def\tsystem_db\n"
"tb_tsbinfo\n"
"tb_tsbinfo\n"
"WorkNum_ID\n"
"WorkNum_ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03\x00\x00\x00\x00\x00"
"I"
"\x00\x00\x05\x03"
"def\tsystem_db"
"\x10"
"tb_tskdetailinfo"
"\x10"
"tb_tskdetailinfo\bBatch ID"
"\x02"
"ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03"
"!"
"\x00\x00\x00\x00"
"Q"
"\x00\x00\x06\x03"
"def\tsystem_db"
"\x10"
"tb_tskdetailinfo"
"\x10"
"tb_tskdetailinfo\tBatchName\tBatchName\f!"
"\x00"
","
"\x01\x00\x00\xfd\x00\x00\x00\x00\x00"
"C"
"\x00\x00"
"\a"
"\x03"
"def\tsystem_db\n"
"tb_tsbinfo\n"
"tb_tsbinfo\bBlock_ID\bBlock_ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03\x00\x00\x00\x00\x00"
"I"
"\x00\x00"
"\b"
"\x03"
"def\tsystem_db\ftb_blockinfo\ftb_blockinfo\tBlockName\tBlockName\f!"
"\x00\x96\x00\x00\x00\xfd\x00\x00\x00\x00\x00"
"G"
"\x00\x00"
"\t"
"\x03"
"def\tsystem_db\ftb_blockinfo\ftb_blockinfo\bModel_ID\bModel_ID\f?"
"\x00"
"\v"
"\x00\x00\x00\x03\x00\x00\x00\x00\x00\x05\x00\x00"
"\n"
"\xfe\x00\x00"
"\""
"\x00\x16\x00\x00"
"\v"
"\x01"
"2"
"\x01"
"3"
"\x01"
"2"
"\x01"
"2"
"\x04"
"8227"
"\x02"
"10"
"\x03"
"TWO"
"\x01"
"4"
"\x15\x00\x00"
"\f"
"\x01"
"2"
"\x01"
"3"
"\x01"
"2"
"\x01"
"2"
"\x04"
"8227"
"\x01"
"9"
"\x03"
"ONE"
"\x01"
"4"
"\x18\x00\x00"
"\r"
"\x01"
"3"
"\x01"
"1"
"\x01"
"1"
"\x01"
"1"
"\x04"
"0001"
"\x01"
"1"
"\x06"
"鍦板潃"
"\x01"
"2"
"\x18\x00\x00\x0e\x01"
"3"
"\x01"
"1"
"\x01"
"1"
"\x01"
"1"
"\x04"
"0001"
"\x01"
"4"
"\x06"
"鏁板瓧"
"\x01"
"2"
"\x05\x00\x00\x0f\xfe\x00\x00"
"\""
"\x00"
经观查是改变了 在 "\x04"
"8227"
"\x02"
"10"
中\x04和\x02表示的是后面字符的位数,如是一位就是\x01,如是三位就是\x03。 这个查表返回的结果中有8列,我要取的是第一行第六列的值。 观查后将关联语句改为: lrs_save_searched_string("socket3",NULL,"Block_ID","LB/BIN=\\v","RB/BIN=\\r",7,0,-1); 取得结果为: \x012\x013\x012\x012\x048227\x0210\x03TWO\x014\x15\x00\x00\f\x012\x013\x012\x012\x048227\x019\x03ONE\x014\x18\x00\x00 我要取得的值在第六个“\”后。写语句: char *Block;
int i;
int k;
int len;//要取值的长度
char Block_str[100];
char Block_len[5];
Block=lr_eval_string("<Block_ID>"); for(k=1;k<=6;)
{
i=i+1; if(Block[i]=='x') k=k+1;
} strncpy(Block_len,Block+i-1,4); lrs_hex_string_to_int(Block_len,1,&len); strncpy(Block_str,Block+i+3,s);
lr_output_message ("Block= %s",Block_str); 取得想要的结果。整理脚本如下: char *Block;
int i;
int k;
int len;//要取值的长度
char Block_str[100];
char Block_len[5]; lrs_save_searched_string("socket3",NULL,"Block_ID","LB/BIN=\\v","RB/BIN=\\r",7,0,-1);
Block=lr_eval_string("<Block_ID>"); //取得第六个x的位置 for(k=1;k<=6;)
{
i=i+1; if(Block[i]=='x') k=k+1;
} strncpy(Block_len,Block+i-1,4);//截/x开始四位 lrs_hex_string_to_int(Block_len,1,&len);//转为int strncpy(Block_str,Block+i+3,s);
lr_output_message ("Block= %s",Block_str); 在往下的脚本编写过程中发现还需要类似的工作,直接写了个函数,如下: //str,被查找的字符串;n,第几个;c查找的字符
char *strn(char *str,int n,char c){
int nlen;//要截取串的长度,十进制数
char rstr[30]="";//截取出的串
char *retu=NULL;//要返回的值
char str_nlen[5]="";//要截取串的长度,字符
int len=0;//str长度
int i=0;//第几位,计数
int k=1;//第几个,计数 // lr_output_message ("str= %s",str);
len=strlen(str);//取得str的长度
//查找第n个X的位置
for(k=1;k<=n;)
{
i=i+1;
if(str[i]==c)//判断字符是否为c
k=k+1;
if(i+3>len)
return 0;//找到末尾条件还是不满足,返回空
} strncpy(str_nlen,str+i-1,4);//截取\x0n,即我们所要取的值的长度,字符串 // lr_output_message ("str_nlen= %s",str_nlen); lrs_hex_string_to_int(str_nlen,1,&nlen);//将str_len转为十进制数,放入len 中 // lr_output_message ("要截取的长度为= %d",nlen); strncpy(rstr,str+i+3,nlen);//截取我们所需要的数据 // lr_output_message ("rstr为= %s",rstr); retu=rstr; return retu;
} 说一下strncpy函数,有两种格式 char *strncpy(char *dest, char *src, int n); char *strncpy( strtemp,str+n , m ) --strtemp字符串变量,截取后的字符串存放处 --str 字符串变量,要截取的字符串 --n ,int 型, -- str+n, 表示从第n 位开始截取字符串 --m,int型,表示截取m位

LoadRunner截取字符串操作的更多相关文章

  1. shell编程常用的截取字符串操作

    1.          常用的字符串操作 1.1.           替换字符串:$ echo ${var/ /_}#支持正怎表达式 / /表示搜索到第一个替换,// /表示搜索到的结果全部替换. ...

  2. shell截取字符串操作

    举例变量:url=http://www.baidu.com/123456.html 1. # 号截取,删除左边字符,保留右边字符. echo ${url#*//} # 其中 url 是变量名,# 号是 ...

  3. Oracle中有关字符串操作的语法

    Oracle中有关字符串操作的语法 Oracle提供了丰富的字符串函数 lpad()函数 lpad()函数用于左补全字符串.在某些情况下,预期的字符串为固定长度,而且格式统一,此时可以考虑使用lpad ...

  4. LoadRunner中截取字符串

    LoadRunner中截取字符串 /*strchr和strrchr的区别*/ char *strTest1="citms citms"; char *strTest2,*strTe ...

  5. linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

    在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略 ...

  6. ABAP字符串操作 截取字符长度 取位数

    ABAP字符串操作   ABAP對字串的操作方法與其他語言的操作有較大差別,以下是較常用的對字串操作的方法: 1. 字串的連接:CONCATENATEDATA: t1 TYPE c LENGTH 10 ...

  7. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  8. Python 字符串操作,截取,长度

    1.字符串操作: 字符串长度: s = "; slen = len(s); 字符串截取: print s[:-:-] #截取,逆序隔1个取一个字符 print s[:-:-] #截取,逆序隔 ...

  9. Loadrunner脚本编程(4)-数据类型操作和字符串操作

    http://www.360doc.com/content/10/0806/13/1698198_44078277.shtml 一,数据类型转换 没有使用过C编程的LoadRunner脚本编写者会发现 ...

随机推荐

  1. array_uintersect、array_uintersect_assoc、array_uintersect_uassoc 的使用方法

    和 array_intersect 类似,只不过 array_uintersect* 系列函数的值比较使用自定义函数: 键的比较,array_uintersect.array_uintersect_a ...

  2. 2018-2019, ICPC, Asia Yokohama Regional Contest 2018 K

    传送门:https://codeforces.com/gym/102082/attachments 题解: 代码: /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ...

  3. Python2和Python3共存安装

    记录下: 先下载Python2.7.6,安装完成,不要添加到path中: 再下载Python3.4.3,安装,不要添加到path中. 进入 Python2: py -2 进入Python3: py - ...

  4. OpenCV---图像二值化

    一:什么是二值图像 彩色图像:三个通道0-,-,-,所以可以有2^24位空间 灰度图像:一个通道0-,所以有256种颜色 二值图像:只有两种颜色,黑和白,1白色,0黑色 二:图像二值化 (一)先获取阈 ...

  5. 2.redis设计与实现--链表

    1.链表节点: 2.链表: 3.总结

  6. ⑥ 设计模式的艺术-06.建造者(Builder)模式

    场景 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样一个问题需要处理: 装配这些子组件是不是有个步骤问题? 实际开发中,我们所需要的对象构建时,也非常复杂,有很多 ...

  7. 集合框架小结-List

    List集合存储的元素是有序的,可重复的,有索引 List特有方法: 增加 add(index, element); addAll(index, Collection); 删除 remove(inde ...

  8. Hadoop 面试总结

    1.简要描述如何安装配置一个开源的hadoop,只描述即可,列出完整步骤. a.创建一个用户和用户组,用来管理hadoop项目 b.修改确定ip地址:vim /etc/sysconfig/networ ...

  9. 第七周 ch04 课下测试补交

    2017-2018-1 20155335 <信息安全系统设计基础>第7周 课下测试博客 本人不慎忘记去交dao'zhi 测试题目: SEQ+对SEQ的改变有() A . PC的计算挪到取指 ...

  10. 【洛谷 P4016】 负载平衡问题(费用流)

    题目链接 环形均分纸牌,既然是网络流23题的那就用网络流做把. 套路拆点. 供需平衡. 源点向大于平均数的点的入点连流量为这个数减去平均数的差,费用为0的边,表示需要移走这么多. 小于平均数的点的出点 ...