[.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();
}