示例#1
0
CStr ReplaceStrI(CStr in, CStr from, CStr to)
{
	char *p;
	int fl = from.Length(), tl = to.Length(), il = in.Length();

	if (fl <= 0 || fl > il)
		return in;


	if (fl == tl) {
		char *i = in.SafeP();
		char *b = i;
		while ((p = stristr(i, (il-(i-b)), from, fl))) {
			memcpy(p, to.Data(), tl);
			i = p + fl;
		}
		return in;
	} else {
		CStr res;
		char *i = in.SafeP();
		while ((p = stristr(i, il-(i-in.Data()), from, fl))) {
			res.Append(i, p - i);
			if (tl > 0)
				res << to;
			i = p + fl;
		}
		if (i != in.Data()) {
			res.Append(i, il - (i - in.Data()));
			return res;
		} else {
			return in;
		}
	}
}