不讲为什么,不讲原理,哥就是这么实在,直接上代码。
目标字符串编码和原字符串编码必须统一
大牛略过
// 获取字符串在目标字符串中的最后出现位置 str原始字符串,softStr目标字符串
func StrLastIndexOf(str string, softStr string) int {
index := -1
strRune := []rune(str)
softRune := []rune(softStr)
for i := 0; i < len(strRune); i++ {
softLen := len(softRune)
existTag := false
if strRune[i] == softRune[0] {
for j := 0; j < softLen; j++ {
if strRune[i+j] == softRune[j] {
existTag = true
} else {
existTag = false
}
}
}
if existTag {
index = i
}
}
return index
}
// 获取字符串在目标字符串中的第一次出现位置 str原始字符串,softStr目标字符串
func StrIndexOf(str string, softStr string) int {
index := -1
strRune := []rune(str)
softRune := []rune(softStr)
for i := 0; i < len(strRune); i++ {
softLen := len(softRune)
existTag := false
if strRune[i] == softRune[0] {
for j := 0; j < softLen; j++ {
if strRune[i+j] == softRune[j] {
existTag = true
} else {
existTag = false
}
}
}
if existTag {
index = i
break
}
}
return index
}
// 获取字符串长度
func StringLength(str string) int {
strRune := []rune(str)
return len(strRune)
}
// 截取字符串
func SubString(str string, beginIndex int, endIndex int) string {
strRune := []rune(str)
return string(strRune[beginIndex:endIndex])
}
使用方法:
name := "湖南省长沙市浏阳市胜利村芦塘片耀山组231号"
index := tools.StrIndexOf(name, "市")
spStr := tools.SubString(name, index+1, tools.StringLength(name))
fmt.Println(spStr)