//start:正数 - 在字符串的指定位置开始,超出字符串长度强制把start变为字符串长度
// 负数 - 在从字符串结尾的指定位置开始
// 0 - 在字符串中的第一个字符处开始
//length:正数 - 从 start 参数所在的位置返回
// 负数 - 从字符串末端返回
func Substr(str string, start, length int) string {
if length == 0 {
return ""
}
rune_str := []rune(str)
len_str := len(rune_str)
if start < 0 {
start = len_str + start
}
if start > len_str {
start = len_str
}
end := start + length
if end > len_str {
end = len_str
}
if length < 0 {
end = len_str + length
}
if start > end {
start, end = end, start
}
return string(rune_str[start:end])
}