Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String golang字符串中的字符计数_String_Unicode_Go_Emoji_String Length - Fatal编程技术网

String golang字符串中的字符计数

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)(“您好,世 我编

我正在尝试计算围棋中的“角色”。也就是说,如果一个字符串包含一个可打印的“glyph”或“composited character”(或者人们通常认为的字符),我希望它计数为1。例如,字符串“Hello,世 参考API文档的示例。

主程序包
进口(
“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库