求 asp替换两个字符间的字符串的程序

求 asp替换两个字符间的字符串的程序,第1张

思路,找到3,和4的们置,然后再取得3和4之间的字符,最后用replace函数进行替换,如:

str="as3dsafdsa4dfa"

s1=instr(str,"3") '3的位置

s2=instr(str,"4") '4的位置

s3=mid(str,s1,s2-s1)

replace(str,s3,"jkl")

不知是否满意

二楼好像没理解题意,有时间我写一个,但分数也太少了吧?悲哀!

/

以下程序可以实现替换字符串中的字符串

/

#include <stdioh>

#include <stringh>

char replace(char str, char str1, char str2, char strretu)

{

char str_temp = str;

char str1_temp = str1;

char str2_temp = str2;

char strretu_temp = NULL;

unsigned long char_size = (unsigned long)sizeof(char);

/计算字符长度/

unsigned long i,j,rep_acc = 0;

unsigned long str_len = strlen(str);

unsigned long str1_len = strlen(str1);

unsigned long str2_len = strlen(str2);

/首先找出Str里有几个地方要被替换的/

for(; str_temp - str < str_len; )

{

for(i = 0; i < str1_len; i++)

{

if(str_temp++ != str1_temp++)

{

str1_temp = str1;

break;

}

else

{

if(i == str1_len - 1)

{

str1_temp = str1;

rep_acc++;

}

}

}

}

str1_temp = str1;

str_temp = str;

/分配所需内存/

strretu = strretu_temp = malloc(((str_len - str1_len rep_acc) + str2_len rep_acc + 1) char_size);

/替换/

for(; str_temp - str < str_len; )

{

for(i = 0; i < str1_len; i++)

{

strretu_temp++ = str_temp;

if(str_temp++ != str1_temp++)

{

str1_temp = str1;

break;

}

else

{

if(i == str1_len - 1)

{

strretu_temp = strretu_temp - str1_len;

for(i = 0; i < str2_len; i++)

{

strretu_temp++ = str2_temp++;

}

str2_temp = str2;

str1_temp = str1;

}

}

}

}

strretu_temp = '\0';

str1_temp = str1;

str_temp = str;

str2_temp = str2;

return(strretu);

}

int main(void)

{

/

char str = "asdf123asdf123aa";

char str1 = "123";

char str2 = "999";

char str = "eeeeee1245eeeeeeeeee1245eeeeeeeeeeeee1245eeeeeeeeeeee1245eeeeeeeeeeeee";

char str1 = "1245";

char str2 = "ffffffff";

/

char str = "fffffff0fffffff1fffffff2fffffff3fffffff4fffffff5fffffff6fffffff7fffffff8fffffff9";

char str1 = "fffffff";

char str2 = "月梦";

char strretu = NULL;

printf("str = %s\n", str);

printf("str1 = %s\n", str1);

printf("str2 = %s\n", str2);

strretu = replace(str, str1, str2, strretu);

printf("strretu = %s\n", strretu);

getch();

free(strretu);

return 0;

}

import javautilregex;

public class RepTest {

public static void main(String[] args) {

String src = ">=,<=,=,>=,<=,=,>=,<=,=,>=,<=,=,>=,<=,=,>=,<=,=,";

Systemoutprintln("原串:"+src);

Matcher ma = Patterncompile("[^><]=")matcher(src);

while (mafind()) {

src = srcreplaceAll(magroup(), "");

}

Systemoutprintln("替换:"+src);

//其实还有一个思路,你可以拿逗号切成数组,然后对数组元素进行判断,拿=号切也可以!

}

}

我帮你写了两个,替换串的那个写到一半懒得写了,你按思路继续完成吧,已经说的很清楚了,你应该能搞定

这个是替换单个字符的

internal void ChangeWchar(/string mStr,string findStr,string replace str/)

{

string str="my !name is !";

string C1="!", C2="", D1="", D2="#";

string resultStr = "";

for (int i = 0; i < strLength; i++)

{

if (stringCompare(C1, strSubstring(i,1)) == 0)

resultStr += C2;

else if (stringCompare(D1, strSubstring(i,1)) == 0)

resultStr += D2;

else

resultStr += strSubstring(i,1);

}

}

下面是替换串的

class FindReplaceStrStru

{

public int s, e;

}

internal void ChangeStr(/自定义参/)

{

string str = "my !name is !";

string C1 = "!", C2 = "", D1 = "", D2 = "#";//设定优先级,若要替换的c1串中含有c2串,如:c1="12345" c2="23"

string resultStr = "";

//以c1优先为例子。

//先定义一个“碎片”数组,只为了方便说明问题而定义,实际考虑效率可去掉,并改写函数

//此段是保存不包含优先级1的字符串 - 段位置。

List<FindReplaceStrStru> rp2list = new List<FindReplaceStrStru>();

int sID = 0, eID = 0;

while (true)

{

eID = sID;

sID = strIndexOf(C1, sID);

if (sID >= 0)

{

rp2listAdd(new FindReplaceStrStru());

rp2list[rp2listCount - 1]s = eID == 0 0 : eID + C1Length;//此处若首次查找在0位置成功找到,可能会加一条无用的段,可在这这前加个判断是否为零,若为则不加

rp2list[rp2listCount - 1]e = sID;

sID += C1Length;

//画图你就明白了如:

// |&&&&&&&&&&&&&&&&&&|取不包含优先级1的段。

}

else

break;

}

//if((sID)<strLength)

//最后检查一下,若没有到未尾,则加上尾段。

//到此你可以你用查找单个字符的思路,用重新连接一个字符串的方式,而不是直接替换,因为要 替换的c1长度为2,但替换后的c2可能长度为3,所以会改变长度,不可直接替换,用重新连接一个新串的方法

//到此应该可以解决了,若搞不定可以留言。

}

#include<stdioh>

#include<conioh>

#include<stringh>

#include<stdlibh>

void Substitute(char pInput, char pOutput, char pSrc, char pDst)

{

char    pi, po, p;

int     nSrcLen, nDstLen, nLen;

// 指向输入字符串的游动指针

pi = pInput;

// 指向输出字符串的游动指针

po = pOutput;

// 计算被替换串和替换串的长度

nSrcLen = strlen(pSrc);

nDstLen = strlen(pDst);

// 查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null)

p = strstr(pi, pSrc);

if(p)

{

// 找到

while(p)

{

//计算被替换串前边字符串的长度

nLen = (int)(p - pi);

// 复制到输出字符串

memcpy(po, pi, nLen);

memcpy(po + nLen, pDst, nDstLen);

// 跳过被替换串

pi = p + nSrcLen;

// 调整指向输出串的指针位置

po = po + nLen + nDstLen;

// 继续查找

p = strstr(pi, pSrc);

}

// 复制剩余字符串

strcpy(po, pi);

}

else

{

// 没有找到则原样复制

strcpy(po, pi);

}

}

int main(int ac, char av[])

{

if (ac!=5) {

printf("程序名 要 *** 作的文件 新文件 查找的字符串 替换的字符串\n");

printf("示例:testexe 1txt 2txt hello love\n");

return 0;

}

const int MAXSIZES = 100;

FILE fpSrc,fpDes;

char filename1[20]="1txt";

char filename2[20]="2txt";

//要求查找的字符串,替换的字符串;

char ps[]="hello";

char pd[]="love";

//求取所查找和替换的字符串的长度;

int len_src=strlen(av[3]);

int len_des=strlen(av[4]);

//定义存储字符串缓冲区;很奇怪的一点是,fgets函数不能将字符串写入动态分配的内存中

/char Src_buf=(char)(sizeof(char)MAXSIZES);

char Cpy_buf=(char)(sizeof(char)MAXSIZES);

char Des_buf=(char)(sizeof(char)MAXSIZES);/

char Src_buf[MAXSIZES] = {0};

char Cpy_buf[MAXSIZES] = {0};

char Des_buf[MAXSIZES] = {0};

//打开文件

if((fpSrc=fopen(av[1],"r+"))==NULL)

{

printf("fail to open the file1 !\n");

exit(1);

}

if((fpDes=fopen(av[2],"a+"))==NULL)

{

printf("fail to open the file2 !\n");

exit(1);

}

//进行循环读取

while(!feof(fpSrc))//判断文件是否已结束;!feof(fpSrc)

{

fgets(Src_buf,MAXSIZES,fpSrc);

Substitute(Src_buf,Des_buf,av[3],av[4]);

fputs(Des_buf,fpDes);

printf("%s",Des_buf);

}

fclose(fpSrc);

fclose(fpDes);

system("pause");

return 0;

}说明:使用c标准为中的文件I/O函数一般是不推荐的,做为练习可以学习,真正用的最多的是内存文件映射。那要比用I/O函数读来读取方便的多,限制也会更小。

以上就是关于求 asp替换两个字符间的字符串的程序全部的内容,包括:求 asp替换两个字符间的字符串的程序、用c语言实现替换字符串中的字符串、Java 字符串替换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10034622.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存