[.NET - CSharp] Nice Little String Rotator

These string rotator methods appeared in a chain of recent posts on the DOTNET-CLR list. I recorded them here because they may prove useful.

A substring approach:

    public static string RotateLeftSubstring
            (string s, int start, int length, int amount)
    {
        // Allow amount to be negative (as far as -length)
        amount = (length+amount) % length;

        return 
            s.Substring(0, start)+ 
            s.Substring(start + amount, length-amount) + 
            s.Substring(start, amount) + 
            s.Substring(start + length, s.Length - (start+length) );
    }

A StringBuilder approach:

    public static string Rotate(string s, int start, int length, int amount) {
       StringBuilder sb = new StringBuilder(s);
       for (int i = 0; i < length; ++i) {
           sb[start + i] = s[start + ((i + amount) % length + length) % length];
       }
       return sb.ToString();
    }

No Comments