public static string TrimToLength( this string s, int maxLength, TrimPosition position = TrimPosition.End) { if (s == null || s.Length <= maxLength) { return(s); } if (maxLength <= 0) { return(string.Empty); } var length = maxLength - 1; switch (position) { case TrimPosition.End: return(s.Substring(0, length) + "…"); case TrimPosition.Start: return("…" + s.Substring(s.Length - length, length)); case TrimPosition.Middle: int suffix = length / 2; int prefix = length - suffix; return(s.Substring(0, prefix) + "…" + s.Substring(s.Length - suffix, suffix)); default: throw new ArgumentOutOfRangeException(nameof(position), position, null); } }
public void TrimToLength(string input, int maxLength, TrimPosition position, string expected) { Assert.Equal(expected, input.TrimToLength(maxLength, position)); Assert.Equal(expected, StringExtensions.TrimToLength(input, maxLength, position)); }