String extension methods for truncating and adding ellipsis
Some useful extension methods for working with strings and IEnumerable<string>. These come in handy when logging as you often want to show just 80 characters (say) in a log entry.
/// <summary>
/// Substring but OK if shorter
/// </summary>
public static string Limit(this string str, int characterCount)
{
if (str.Length <= characterCount) return str;
else return str.Substring(0, characterCount).TrimEnd(‘ ‘);
}
/// <summary>
/// Substring with elipses but OK if shorter, will take 3 characters off character count if necessary
/// </summary>
public static string LimitWithElipses(this string str, int characterCount)
{
if (characterCount < 5) return str.Limit(characterCount); // Can’t do much with such a short limit
if (str.Length <= characterCount – 3) return str;
else return str.Substring(0, characterCount – 3) + “…”;
}
/// <summary>
/// Substring with elipses but OK if shorter, will take 3 characters off character count if necessary
/// tries to land on a space.
/// </summary>
public static string LimitWithElipsesOnWordBoundary(this string str, int characterCount)
{
if (characterCount < 5) return str.Limit(characterCount); // Can’t do much with such a short limit
if (str.Length <= characterCount – 3)
return str;
else
{
int lastspace = str.Substring(0, characterCount – 3).LastIndexOf(‘ ‘);
if (lastspace > 0 && lastspace > characterCount – 10)
{
return str.Substring(0, lastspace) + “…”;
}
else
{
// No suitable space was found
return str.Substring(0, characterCount – 3) + “…”;
}
}
}
about 11 months ago
Sweet – just what I was looking for. Nice work, thanks!