public static string DotDotDot(this string value, int offset, int characterLimit, string append = "...", string prepend = "... ", StringBreakType breakType = StringBreakType.Word) { char[] seperator; switch (breakType) { case StringBreakType.Sentence: seperator = new char[] { '.' }; break; case StringBreakType.Word: default: seperator = new char[] { ' ' }; break; } int actualCharacterLimit = characterLimit - append.Length; if (actualCharacterLimit >= value.Length) { return(value); } if (offset < 0) { offset = 0; } string[] sliceList = value.Split(seperator, StringSplitOptions.RemoveEmptyEntries); StringBuilder trimmedSentenceBuilder = new StringBuilder(); if (offset > 0) { trimmedSentenceBuilder.Append(prepend); } if (sliceList.Any()) { int i = 0; do { if (offset > 0) { offset -= sliceList[i].Length + 1; // +1 ayraç için continue; } trimmedSentenceBuilder.Append(sliceList[i]).Append(seperator[0]); } while ((++i < sliceList.Length) && (trimmedSentenceBuilder.Length + sliceList[i].Length) < actualCharacterLimit); trimmedSentenceBuilder.Append(append); return(trimmedSentenceBuilder.ToString()); } else { return(value); } }
public static string DotDotDot(this string value, int characterLimit, string append = "...", StringBreakType breakType = StringBreakType.Word) { return(DotDotDot(value, 0, characterLimit, append: append, breakType: breakType)); }