给定三个字符串,查找第一个字符串是否包含第二个字符串,如果包含,则将第三个字符串替换第二个字符串(第一个字符串可能多次包含第二个字符串); 例如:对于字符串“abcabcdefghij”、“fgh”、“sk”,则程序输出“abcabcdeskij”。
提示:1)确定合法字符集合;
2)对输入字符串的合法性进行判断
分配一个字符串数组,存三个字符串大小的,分别输入,给三个指针,输完开始使用指针找
大神 给个过程,要怎么编程。
1.已经不会C 了,好尴尬,给你个OC的吧。。。
NSString *contentStr = @"abcabcdefghijasdfas(fgh)kjlohg";
NSString *needReplacedStr = @"fgh";
NSString *replacedStr = @"sk";
NSString *resultStr = [[contentStr componentsSeparatedByString:needReplacedStr] componentsJoinedByString:replacedStr];
printf("%s",[resultStr cStringUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"%@",resultStr);
以下代码没调试过,仅供参考:
char* replace(const char* src, const char* find, const char* replace)
{
// 判断错误
if(src == NULL || find == null || replace == NULL)
return NULL;
// 假设初始长度为src的字符串长度
int srclen = strlen(src);
int findlen = strlen(find);
int replen = strlen(replace);
int maxlen =srclen + 1;
// 如果要替换的值比发现的值大,则重新计算
if(replen > findlen)
maxlen = (srclen + 1) * replen / findlen + 1;
char* ret = malloc(maxlen);
// 复制替换
for(int i = 0; i < srclen; i ++)
{
// 如果找到find, 则复制replace,且src偏移findlen
if(strncmp(src + i, find, findlen) == 0)
{
memcpy(src + i, replace, replen);
ret += replen;
i += findlen - 1;
}
// 如果没找到find,则复制src一个字符
else
{
*ret ++ = src[i];
}
}
*ret = 0;
return ret;
}
split后放到数组,在逐一对比
希望对你有帮助 里面都有,就是需要改改 http://m.blog.csdn.net/article/details?id=53512140