public static string Replace(
this string src,
string oldValue,
string newValue,
StringComparison comparison)
{
if (string.IsNullOrEmpty(oldValue))
throw new ArgumentException("String cannot be of zero length or null.", "oldValue");
if (string.IsNullOrEmpty(newValue)) // It can be an empty string though
throw new ArgumentException("String cannot be null.", "newValue");
// skip the loop entirely if oldValue and newValue are the same
if (string.Compare(oldValue, newValue, comparison) == 0)
return src;
if (oldValue.Length > src.Length)
return src;
int index = src.IndexOf(oldValue, comparison);
if (index == -1)
return src;
var sb = new StringBuilder(src.Length);
int previousIndex = 0;
while (index != -1)
{
sb.Append(src.Substring(previousIndex, index - previousIndex));
sb.Append(newValue);
index += oldValue.Length;
previousIndex = index;
index = src.IndexOf(oldValue, index, comparison);
}
sb.Append(src.Substring(previousIndex));
return sb.ToString();
}
August 8, 2022
String Replace with StringComparison
I found this https://stackoverflow.com/questions/244531/is-there-an-alternative-to-string-replace-that-is-case-insensitive/13847351#comment31063745_244933 I added a few defensive checks.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment