golang 包含中文字符串的字符串截取、查找

记录一下平时常用的一些工具函数,方便自己后续再用的时候可以查看。

习惯了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
}

你可能感兴趣的:(工具函数,字符串,go)