您的位置:

c语言字符串子串替换函数,C语言字符串替换指定字符串

本文目录一览:

C语言中子串替换函数

#includestdio.h

#includestring.h

#define N 80

void Displaces(char s1[],char s2[],char s3[])

{

char s4[N];

int i=0,j;

while(s1[i]!='\0')

{

if(s1[i]==s2[0])

{

for(j=0;jstrlen(s2);j++)

{

s4[j]=s1[j+i];

}

s4[j]='\0';

if(strcmp(s2,s4)==0)

{

for(j=0;jstrlen(s2);j++,i++)

{

s1[i]=s3[j];

}

}

else

i++;

}

else

i++;

}

}

int main(void)

{

char s1[N],s2[N],s3[N];

gets(s1);

gets(s2);

gets(s3);

Displaces(s1,s2,s3);

puts(s1);

return 0;

}

应该是这样的吧。。。 给分吧!哪不明白可以找我!

C语言 实现子串替换函数:用子串r替换源串c中的子串p

#includestdio.h

#include stdlib.h

#include string.h

void replace_string(char *c, const char *p, const char *r);

int main()

{

char c[100] = "you are the best,you should word hard,and you will be success!";

char p[] = "you";

char r[] = "LGDDD";

replace_string(c, p, r);

printf("替换后:");

puts(c);

return 0;

}

void replace_string(char *c, const char *p, const char *r)

{

int i = 0, j = 0;

while (c[j] = c[i])

{

int len = strlen(c);

int len1 = strlen(p);

int len2 = strlen(r);

int m = i;

int n = 0;

for (; c[m] == p[n]  p[n]; m++, n++);

if (p[n] != 0)

{

i++;

j++;

}

else

// i = i + strlen(p);

 if (len2  len1)

{

int m1,n1;

for (m1 = len; m1 = i + strlen(p); m1--)

c[m1 + len2-len1] = c[m1];

// puts(c);

for (n1 = i, m1 = 0; m1  len2; m1++, n1++)

c[n1] = r[m1];

}

else if (len2 = len1)

{

int m1, n1;

for (m1 = i + len1 - len2, n1 = 0; n1  len2; n1++, m1++)

c[m1] = r[n1];

i = i + len1 - len2;

}

}

}

c语言 子串替换

char  *replace(char  *source,  char  *sub,  char  *rep) 

{ 

 char  *result; 

 /*pc1  是复制到结果result的扫描指针*/

 /*pc2  是扫描 source 的辅助指针*/

 /*pc3  寻找子串时,为检查变化中的source是否与子串相等,是指向sub的扫描指针 */

 /*找到匹配后,为了复制到结果串,是指向rep的扫描指针*/

 char  *pc1,  *pc2,  *pc3; 

 int  isource,  isub,  irep; 

 isub  = strlen(sub); /*对比字符串的长度*/

 irep  = strlen(rep); /*替换字符串的长度*/

 isource= strlen(source); /*源字符串的长度*/ 

 if(NULL == *sub)

  return strdup(source); 

 /*申请结果串需要的空间*/

 result  = (char *)malloc(( (irep isub) ? (float)strlen(source) / isub* irep+ 1:isource ) * sizeof(char));

 pc1  =  result; /*为pc1依次复制结果串的每个字节作准备*/

 while(*source  !=  NULL) 

 { 

  /*为检查source与sub是否相等作准备,为pc2,pc3 赋初值*/

 pc2  =  source; 

 pc3  =  sub;

  /* 出循环的(任一)条件是: 

*  *pc2 不等于 *pc3 (与子串不相等) 

*  pc2  到源串结尾 

*  pc3  到源串结尾 (此时,检查了全部子串,source处与sub相等) 

*****************************************************/

 while(*pc2  ==  *pc3    *pc3  !=  NULL    *pc2  !=  NULL) 

 pc2++,  pc3++; [Page]

  /* 如果找到了子串,进行以下处理工作*/

 if(NULL  ==  *pc3) 

 { 

 pc3  =  rep; 

/*将替代串追加到结果串*/

 while(*pc3  !=  NULL) 

 *pc1++  =  *pc3++; 

 pc2--; 

 source  =  pc2; 

/* 检查 source与sub相等的循环结束后, 

* pc2 对应的位置是在 sub 中串结束符处。该是源串中下一个位置。 

* 将 source 指向其前面一个字符。 

***************************************************/

 } 

 else /*如果没找到子串,下面复制source所指的字节到结果串*/ 

 *pc1++ = *source; 

 source++; /* 将source向后移一个字符*/ 

 } 

 *pc1  =  NULL;

 return  result;

}

以下为测试代码:

int main()

{

  char s1[] ="abbccdfdcdbbdcd";

 char s2[]="dcd";

char s3[]="12345";

char *p = replace(s1,s2,s3);

printf("source=%s

",s1);

puts(s1);

  printf("sub = %s

",s2);

puts(s2);

  printf("replace string = %s",p);

return 0;

}

c语言 字符串替换函数

替换函数主要有strtr(),str_repalce()这两个函数。

首先针对strtr函数第一种方式:

我们看看下面的举例:

?php

echo strtr("I Love you","Lo","lO");

?

得到的结果是:

I lOve yOu

这个结果提醒我们:

1.strtr它是区分大小写的

2.strtr的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意。

再举一个特殊例子,说明这个php的sttr函数的怪异

?php

echo strtr("I Love you","Love","");

?

结果是:

I Love you

什么也不会改变,所以strtr需要注意的是:

3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。

再次举例strtr函数的另一种情况:

?php

echo strtr("I Loves you","Love","lOvEA");

?

结果是:

I lOvEs yOu

注意看第三个参数的A,在结果中并没有出现。

4.我不建议用strtr以少换多。

ok,既然这个strtr函数挺麻烦为什么还要用呢?

原因是,它的速度很快。据说,strtr 比 str_replace 快四倍。

5.能用strtr函数的时候一定要用。

第二种情况:

strtr(string,array)

6.strtr符合意愿的使用方法

?php

$table_change = array('you'='her sister');

echo strtr("I Love you",$table_change);

?

结果为:

I Love her sister

7.小技巧:你想到替换什么你就往数组加什么

比如:

?php

$table_change = array('you'='her sister');

$table_change += array('Love' = 'hate');

echo strtr("I Love you",$table_change);

?

结果是:

I hate her sister

再次提醒那个Love 写成love 是行不通的哦。

字符串取代。

语法: string str_replace(string needle, string str, string haystack);

返回值: 字符串

函数种类: 资料处理

内容说明

本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str。

下例将 %body% 以 black 取代

?php

$bodytag = str_replace("%body%", "black", "body text=%body%");

echo $bodytag;

?

格式:

[@str_replace("要替换的旧内容", "要取代原内容的新字符", $被替换内容的变量名)]

[@str_replace(array('旧1','旧2','旧3'), array('新1','新2','新3'), $被替换内容的变量名)]

[@str_replace(array('旧1','旧2','旧3'), '新内容', $被替换内容的变量名)]

实例:

多对一替换:想把内容字段里所有的p/p标签清除掉,替换成空 [@str_replace(array('p','/p'), '', $Content)]

一对一替换:想把内容字段里所有的br标签换成p [@str_replace('br', 'p', $Content)]

多对多替换:想把内容字段里的br换成br /, 同时p换hr,把/p全清除 [@str_replace(array('br', 'p','/p'), array('br /','hr',''), $Content)]