You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

string.go 428B

12345678910111213141516171819202122232425262728
  1. package util
  2. import (
  3. "strings"
  4. "unicode"
  5. )
  6. func Truncate(in string, length int) string {
  7. parts := strings.Split(in, "\n")
  8. in = parts[0]
  9. if len(in) <= length {
  10. if len(parts) > 1 {
  11. return in + "…"
  12. } else {
  13. return in
  14. }
  15. }
  16. runes := []rune(in)
  17. for i := len(runes) - 1; i > 1; i-- {
  18. if unicode.IsSpace(runes[i]) && len(string(runes[:i])) < length {
  19. return string(runes[:i]) + "…"
  20. }
  21. }
  22. return ""
  23. }