1// SubString works well with unicode
2func SubString(str string, start int, length int) string {
3 r := []rune(str)
4 n := len(r)
5 if start >= n || length <= 0 {
6 return ""
7 }
8
9 if start < 0 {
10 start = 0
11 }
12 end := start + length
13 if end > n {
14 end = n
15 }
16
17 return string(r[start:end])
18}