记录一下平时常用的一些工具函数,方便自己后续再用的时候可以查看。
习惯了C++的直接获取字符串函数,这里仿照C++实现一个子字符串获取:
//解决中文获取位置不正确问题
//解决中文获取位置不正确问题
func Substring(source string, start int, end int) string {
var unicodeStr = []rune(source)
length := len(unicodeStr)
if start >= end {
return ""
}
if start < 0 {
start = 0
}
if end > length {
end = length
}
if start <= 0 && end >= length {
return source
}
var substring = ""
for i := start; i < end; i++ {
substring += string(unicodeStr[i])
}
return substring
}
获取包含中文字符串的字符串实际长度,非字节长度:
//获取带中文的字符串实际长度,非字节长度
func UnicodeLen(str string) int {
var r = []rune(str)
return len(r)
}
查找包含中文字符串中实际字符串位置,非字节位置:
//获取带中文的字符串中子字符串的实际位置,非字节位置
func UnicodeIndex(str, substr string) int {
// 子串在字符串的字节位置
result := strings.Index(str, substr)
if result > 0 {
prefix := []byte(str)[0:result]
rs := []rune(string(prefix))
result = len(rs)
}
return result
}