String golang字符串中的字符计数
我正在尝试计算围棋中的“角色”。也就是说,如果一个字符串包含一个可打印的“glyph”或“composited character”(或者人们通常认为的字符),我希望它计数为1。例如,字符串“Hello,世 参考API文档的示例。String golang字符串中的字符计数,string,unicode,go,emoji,string-length,String,Unicode,Go,Emoji,String Length,我正在尝试计算围棋中的“角色”。也就是说,如果一个字符串包含一个可打印的“glyph”或“composited character”(或者人们通常认为的字符),我希望它计数为1。例如,字符串“Hello,世 参考API文档的示例。 主程序包 进口( “fmt” “unicode/utf8” ) func main(){ str:=“你好,世 你试过了吗 主程序包 进口( “fmt” “字符串” ) func main(){ fmt.Println(strings.Count)(“您好,世 我编
主程序包
进口(
“fmt”
“unicode/utf8”
)
func main(){
str:=“你好,世 你试过了吗
主程序包
进口(
“fmt”
“字符串”
)
func main(){
fmt.Println(strings.Count)(“您好,世 我编写了一个程序包,允许您执行以下操作:。它根据您要查找的规则来断开字符串。以下是在您的案例中如何使用它:
主程序包
进口(
“fmt”
“github.com/rivo/uniseg”
)
func main(){
fmt.Println(uniseg.GraphemeClusterCount(“你好,世 我认为最简单的方法是:
主程序包
输入“fmt”
func main(){
str:=“你好,世 直接本机使用utf8.runecounnstring()
主程序包
进口(
“fmt”
“unicode/utf8”
)
func main(){
str:=“你好,世这包括符文,而不是字母:str:=“什么是“AX”以及为什么它应该是1?这是U+1F1E6 U+1F1FD
,应该呈现为奥兰群岛的旗帜。任何其他区域指示符号都会有相同的结果(也许但是U+1F1E6
和U+1F1FD
也可以是两个独立的字符,对吗?是的,但是在区域指示符序列中,它们形成一个图形(或者如原始问题所说的“一个可打印的‘glyph’),世您正在寻找的是的实现。我相信这是对的。我尝试了这两种实现来计算这个答案中的字形,但我遇到了同样的问题,但也许字形群集边界计数更符合我的要求?这个问题的答案混淆了“字形群集”和“字符规范化”(都有严重的错误)。你能找到解决办法吗?问题是肤色修改器被算作一个单独的字符,而norm不“算数”它是1个字符。从来没有找到一个正确的解决方案,所以我不得不放宽我的要求。或者更直接地使用utf8。RuneCountInstalling感谢您的修改@mvndaai RuneCountString类似于RuneCount,但它的输入是字符串而不是字节。这是最好的答案,因为它使用的是内部utf8库而不是外部utf8库