我找到了这个,https://groups.google.com/forum/#!topic/golang-nuts/YyKlLwuWt3w但据我所知,这些解决方案对我不起作用.
如果你使用将字符串视为slice(str[:20])的方法,它会在字符中间断开,我们得到"ال ".
编辑:我相信我可以编写一个函数并以3的倍数执行,因为符文是int32(32位/(8位/字节)).我首先要检查是否有符文.
rig*_*old 18
首先将其转换为符文切片,切片,然后将结果转换回:
string([]rune(str)[:20])
Run Code Online (Sandbox Code Playgroud)
您可以获取UTF-8字符串的子字符串而无需分配额外的内存(您不必将其转换为rune切片):
func substring(s string, start int, end int) string {
start_str_idx := 0
i := 0
for j := range s {
if i == start {
start_str_idx = j
}
if i == end {
return s[start_str_idx:j]
}
i++
}
return s[start_str_idx:]
}
func main() {
s := "?? Hello"
fmt.Println(substring(s, 0, 1)) // ?
fmt.Println(substring(s, 1, 5)) // ? He
fmt.Println(substring(s, 3, 8)) // Hello
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3842 次 |
| 最近记录: |