1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#include "string.ih"
void string_replace(String *str,
char const *search, char const *replace)
{
size_t searchlen = search ? strlen(search) : 0;
register char *left = str->d_str;
register char *right;
String out;
if (!searchlen) /* search should have some length */
return;
string_construct(&out, 0);
while ((right = strstr(left, search)))
{
string_additerators(&out, left, right);
string_addstr(&out, replace);
left = right + searchlen;
}
string_addstr(&out, left); /* append the final tail */
string_copy(str, &out);
string_destruct(&out);
}
|