honglong 发表于 2007-7-24 18:11:05

请问在lr中如何截取字符串的中的一部份?

我把一个字符串参数化后,发现另一个字符串是依赖前一个字符串的,例如:第一字符串是:001008, 第二个字符串就是001;或第一字符串是:北京西城区, 第二个字符串就是北京。所以我想问如何从一个字符串中截取一部份或多部份。
还有个问题就是,我声明了个变量,可是如何让这个变量等于参数化的值哪?谢谢了。

spartan 发表于 2007-7-26 11:44:09

原帖由 honglong 于 2007-7-24 18:11 发表 http://bbs.51testing.com/images/common/back.gif
我把一个字符串参数化后,发现另一个字符串是依赖前一个字符串的,例如:第一字符串是:001008, 第二个字符串就是001;或第一字符串是:北京西城区, 第二个字符串就是北京。所以我想问如何从一个字符串中截取 ...

之前告诉你的是:用指针循环的方式完成的。现在有更简便的方法,直接用LR的函数+数组的方式完成。不需要使用指针了!!
请看如下的代码:

现有一个字符串:"ABCDEFG", 现要从第三位开始,连续取两位字符,即"DE"! 取值代码如下
char array1;
char array2;

strcpy(array1,"ABCDEFG");
strncpy(array2,&array1,2);      //&array1表示的值是:"CDEFG"
lr_output_message("Value is:%s", array2);

[ 本帖最后由 spartan 于 2007-7-26 11:54 编辑 ]

spartan 发表于 2007-7-24 18:42:27

回复 #1 honglong 的帖子

1.截取某个字符中的某几位代码:

下面的列子是:截取字符串"ABCDEFG"中, 从第三位开始连续两位的字符,即:CD.

int k;
chartempstr2;
char *strtmp="ABCDEFG";

   for (k=1;k<3;k++)
      {
      strtmp++;
      }
lr_output_message( "strtmp=%s",strtmp);
strncpy(tempstr2,strtmp,2);
lr_output_message( "tempstr2=%s",tempstr2);


2.将某个变量的值赋值给某个参数

下面的列子是:将上段代码中变量tempstr2的值,赋值给参数列表中的参数temp,并且显示出来。
lr_save_string(tempstr2,"temp");
lr_output_message("the velue is:%s",lr_eval_string("{temp}"));

Zee 发表于 2007-7-24 18:47:04

顶楼上。

haiquan180 发表于 2007-7-24 19:21:53

顶上很久以前我急需这个

honglong 发表于 2007-7-24 22:28:46

太牛了!就是看着有点晕。看来要好好看看c的书了。太感谢spartan 了。

rickyzhu 发表于 2007-7-24 22:40:23

好好复习复习c吧,其实LoadRunner中的编程语言就是c的一个子集。

hhy0824 发表于 2007-7-25 09:10:10

能把代码解释一下吗?for(k=1){} 那个循环是什么意思呀?

spartan 发表于 2007-7-25 09:48:33

回复 #7 hhy0824 的帖子

for (k=1;k<3;k++)
      {
      strtmp++;
      }

strtmp是个指针。 strtmp++:指针位置往后移动一位。

1.循环开始前,指针指在第一个字符上。即:ABCDEFG

2. K=1,满足循环条件。指针望后移动一位,指在第二个字符上了。 即:ABCDEFG

3. K=2,满足循环条件。指针望后移动一位,指在第三个字符上了。 即:ABCDEFG

4. K=3,不满足循环条件。指针位置不移动,仍然指在第三个字符上。 即:ABCDEFG

所以:经过这个循环之后,指针的位置在第三个字符上。 即:ABCDEFG

[ 本帖最后由 spartan 于 2007-7-25 09:50 编辑 ]

筷子 发表于 2007-7-25 10:00:05

sdlkfj2 强

honglong 发表于 2007-7-25 14:09:29

今天试验时发现一个小问题,请教一下spartan 。char *strtmp="ABCDEFG";
赋值一个字符串,但是如何把一个字符类型的变量赋值给*strtmp。

qiguojie 发表于 2007-7-25 14:33:23

ls理解有错误,*strtmp是指针变量,要赋值也必须是指针变量,而不能把字符类型赋值给指针,只能把字符值的指针赋值给其他指针变量

spartan 发表于 2007-7-25 17:05:54

原帖由 honglong 于 2007-7-25 14:09 发表 http://bbs.51testing.com/images/common/back.gif
今天试验时发现一个小问题,请教一下spartan 。char *strtmp="ABCDEFG";
赋值一个字符串,但是如何把一个字符类型的变量赋值给*strtmp。

你的意思是:程序有个字符类型的变量, 比如说是: empstr,它的值是:jordan, 即:empstr=“jordan”;同时有个指针变量: *temp, 如何将empstr的值jordan赋值给指针变量 *temp, 对吗? 

[ 本帖最后由 spartan 于 2007-7-25 17:07 编辑 ]

spartan 发表于 2007-7-25 18:36:57

我将字符型变量赋值给指针,数组赋值给指针,同样数据类型的指针相互赋值,常量字符串赋值给指针都罗列了一下。应该会对楼主有所帮助的。

point_01()
{
        int k;
               char *point1, *point2;
               char str1;
               chararray1;
               charresult1,result2,result3,result4;

/* 相同类型的指针之间的赋值,将指针point1已经有的值赋给指针point2; */
                   point1="ABCDEFGH";
                   point2=point1;
                   for (k=1;k<3;k++)
                          {
                          point2++;
                          }
               strncpy(result1,point2,3);
               lr_output_message( "指针相互赋值的结果result1=%s",result1);
               
               
/*变量的值赋给相同数据类型的指针*/
              str1='S';//注意:使用char型变量,只能定义一个字符。
                  point2=&str1;
                   for (k=1;k<1;k++)
                          {
                          point2++;
                          }
               strncpy(result2,point2,3);
               lr_output_message( "变量赋值给指针的结果result2=%s",result2);

/* 把数组的值赋予指向数组的指针变量,array1 为数组,将其值赋予指针point1; */
      strcpy(array1,"helloloadrunner");
                point1=array1;
               for (k=1;k<3;k++)
                  {
                  point1++;
                  }
                strncpy(result3,point1,3);
                lr_output_message( "数组赋值给指针的结果result3=%s",result3);

/*把字符串赋予指向字符类型的指针变量, 将字符串"youareboy"赋值给指针point1;*/
                   point1="youareboy";
                   for (k=1;k<3;k++)
                          {
                          point1++;
                          }
               strncpy(result4,point1,3);
               lr_output_message( "字符串赋值给指针的结果result4=%s",result4);

        return 0;
}

[ 本帖最后由 spartan 于 2007-7-25 18:38 编辑 ]

duola1119 发表于 2007-7-26 12:34:24

看得出spartan是个函数高手.
关于截取字符的问题,之前有过这类的贴子.可以找找看一看.不过spartan回答的相当好.支持一下.

hatting_001 发表于 2007-7-26 13:57:48

继续学习中

继续学习中

honglong 发表于 2007-7-26 17:38:59

牛!估计今天晚上有的看了。

lix43420 发表于 2010-3-15 22:25:48

原帖由 spartan 于 2007-7-24 18:42 发表 http://bbs.51testing.com/images/common/back.gif
1.截取某个字符中的某几位代码:

下面的列子是:截取字符串"ABCDEFG"中, 从第三位开始连续两位的字符,即:CD.

int k;
chartempstr2;
char *strtmp="ABCDEFG";

   for (k=1;k
挺不错的。。。很实用,可惜lr_save_var()不够强,如果option参数能设置为第几位开始,那就爽了~~~

RubyWei 发表于 2012-6-9 15:10:12

学习了,用这个方法确实解决了我的问题
页: [1]
查看完整版本: 请问在lr中如何截取字符串的中的一部份?