示例#1
0
        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);
            }
        }
示例#2
0
 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));
 }