~~~
假如
aa:= "中国abc"
fmt.Println(len(aa))
//返回 9
因为我要判断一个字符串的 标题 和 内容 标题==100限制 内容==4000限制
if (len(aa) >4000){
//这里明显错误了, 因为文章里可能包含 英文 和 中文字符 ,一个中文字符占用3个字节
//然后截取 0~4000的字符 其余不要
aa = aa[0:4000]
//这样截取出来的字符串明显不正确的, 中英文 的文章组合 判断有点难啊 没思路了
}
~~~
```go
str := "其实我来问题的"
runes := []rune(str)
if len(runes) > 3 {
fmt.Println("===", string(runes[0:3]))
}
```
要用转换后的切片去截取,你直接用string截取是错误的,`aa[0:3] == "其"`,而 `runes[0:3] == "其实我"`。然后最终还是要把 `[]rune` 转为 `string`的
#4
更多评论
<a href="/user/abin" title="@abin">@abin</a> 嗯 查看长度正确了 哪么截取呢
如 超过4000个字符 只截取 0~3个 其余不要
我这样写的 返回的是数字 不是中文
~~~
aa := "其实我来问题的"
if len([]rune(aa)) > 3 {
fmt.Fprintln(w, []rune(aa[0:3]))
}
在这里返回的是一串数字 [27784]
而并非是我想要的 “其实我” 的字符串
~~~
#2