栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何获取字符串中的字符数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获取字符串中的字符数

您可以

RuneCountInString
从 utf8 包中尝试。

返回 p 中的符文数

那个,如这个脚本所示:“世界”的长度可能是6(用中文写时:“世界”),但它的符文计数是2:

package mainimport "fmt"import "unipre/utf8"func main() {    fmt.Println("Hello, 世界", len("世界"), utf8.RuneCountInString("世界"))}

Phrozen在评论中]补充道:

实际上,您可以

len()
通过类型转换来完成符文。
len([]rune("世界"))
将打印
2
。至少在 Go 1.3 中。


并与CL 108985(五月2018年,为围棋1.11),

len([]rune(string))
现在已经进行了优化。(修复问题 24923)

编译器

len([]rune(string))
自动检测模式,并将其替换为 for r := range s 调用。

添加一个新的运行时函数来计算字符串中的符文。修改编译器以检测模式

len([]rune(string))
并将其替换为新的符文计数运行时函数。

golangRuneCount/lenruneslice/ASCII        27.8ns ± 2%  14.5ns ± 3%  -47.70%RuneCount/lenruneslice/Japanese     126ns ± 2%   60  ns ± 2%  -52.03%RuneCount/lenruneslice/MixedLength  104ns ± 2%   50  ns ± 1%  -51.71%


什么是字符?

字符可以跨越多个符文
例如,’

e
‘ 和 ‘◌́◌́’(急性“u0301”)可以组合形成 ‘é’(
eu0301
NFD 中的“ ”)。这两个符文加在一起就是一个字符

字符的定义可能因应用程序而异。
对于规范化,我们将其定义为:

  • 以起始符开头的一系列符文,
  • 不修改或与任何其他符文反向组合的符文,
  • 后跟可能为空的非起始序列,即执行的符文(通常是重音符号)。

归一化算法一次处理一个字符。

使用该包及其

Iter
类型,“字符”的实际数量将是:

package mainimport "fmt"import "golang.org/x/text/unipre/norm"func main() {    var ia norm.Iter    ia.InitString(norm.NFKD, "école")    nc := 0    for !ia.Done() {        nc = nc + 1        ia.Next()    }    fmt.Printf("Number of chars: %dn", nc)}

在这里,这使用了Unipre 规范化形式NFKD“兼容性分解”


指出,UNICODE 文本分割是可靠确定某些重要文本元素(用户感知的字符、单词和句子)之间默认边界的唯一方法。

为此,您需要一个像rivo/uniseg这样的外部库,它执行Unipre Text Segmentation

将实际计数“字形簇”,其中多个码点可被组合成一个用户感知的字符。

package unisegimport (    "fmt"    "github.com/rivo/uniseg")func main() {    gr := uniseg.NewGraphemes("
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614321.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号