Klipp av för långa texter på smart sätt

Hittade en smidig funktion hos Ted Nyberg som klipper av texter på ett bra sätt. Hacket kommer aldrig i mitten av ett ord och ifall det är mitt i en mening läggs tre punkter till.

Hoppas att det är lugnt att jag återpublicerar koden här också.

public static string TruncateText(string OriginalText, 
    int MaxCharacters)
{
   string stopChars = " .!?";

   if (OriginalText.Length > MaxCharacters)
   { 
      string stringToReturn = OriginalText.Substring(0, MaxCharacters); 

      while (!stopChars.Contains(stringToReturn.Substring
         (stringToReturn.Length-1)) && stringToReturn.Length>0)
      { 
         stringToReturn = stringToReturn.Substring(0, 
            stringToReturn.Length - 1);
      } 

      if (stringToReturn.Length == 0)
         stringToReturn = OriginalText.Substring(MaxCharacters);

      stringToReturn = stringToReturn.Trim(); 
     
      if(!stopChars.Contains(stringToReturn.Substring
         (stringToReturn.Length-1))) 
      { 
         stringToReturn += "..."; 
      } 

      return stringToReturn; 
   } 
   else 
   { 
      return OriginalText; 
   }
}

Comments

Sen i och med C# 3.0 så gör man om det där till en Extension Method till String och det blir ännu snyggare.