思路,找到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 字符串替换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)