[ThreadStatic] static char[] mTempChars; protected static char[] GetTempData() { if (mTempChars == null) mTempChars = new char[1024 * 64]; return mTempChars; } public static string Replace(string value, string oldData, string newData) { char[] tmpchars = GetTempData(); int newpostion = 0; int oldpostion = 0; int length = value.Length; int oldlength = oldData.Length; int newlength = newData.Length; int index = 0; int copylength = 0; bool eq = false; while (index < value.Length) { eq = true; for (int k = 0; k < oldlength; k++) { if (value[index + k] != oldData[k]) { eq = false; break; } } if (eq) { copylength = index - oldpostion; value.CopyTo(oldpostion, tmpchars, newpostion, copylength); newpostion += copylength; index += oldlength; oldpostion = index; newData.CopyTo(0, tmpchars, newpostion, newlength); newpostion += newlength; } else { index++; } } if (oldpostion < length) { copylength = index - oldpostion; value.CopyTo(oldpostion, tmpchars, newpostion, copylength); newpostion += copylength; } return new string(tmpchars, 0, newpostion); }