Friday, 3 June 2011

Fast string replacing algorithm with C# in dotNET

/// <summary>
/// Implements fast string replacing algorithm for CS
/// </summary>
public static string ReplaceEx(string original, string pattern, string replacement, StringComparison comparisonType)
{
    if (original == null)
    {
        return null;
    }

    if (String.IsNullOrEmpty(pattern))
    {
        return original;
    }

    int lenPattern = pattern.Length;
    int idxPattern = -1;
    int idxLast = 0;

    StringBuilder result = new StringBuilder();

    while (true)
    {
        idxPattern = original.IndexOf(pattern, idxPattern + 1, comparisonType);

        if (idxPattern < 0)
        {
            result.Append(original, idxLast, original.Length - idxLast);

            break;
        }

        result.Append(original, idxLast, idxPattern - idxLast);
        result.Append(replacement);

        idxLast = idxPattern + lenPattern;
    }

    return result.ToString();
}

No comments:

Post a Comment