网络编程
位置:首页>> 网络编程>> Go语言>> Golang 统计字符串字数的方法示例

Golang 统计字符串字数的方法示例

作者:小谈博客  发布时间:2024-02-17 07:35:44 

标签:Golang,字符串,字数

比如新浪微博发微博的输入框有一个已输入字数的统计,它的规则推测是:汉字和中文标点算 1 个字数,英文和其他符号算 0.5 个字数。不足 1 个字算 1 个。大家可以去微博体验一下计算方式。

Golang 统计字符串字数的方法示例

golang 可以使用正则和 unicode 包的方法判断。

以下函数 GetStrLength 返回输入的字符串的字数,每个汉字和中文标点算 1 个字数,英文和其他字符算半个字数,不足 1 个字算 1 个。


// GetStrLength 返回输入的字符串的字数,汉字和中文标点算 1 个字数,英文和其他字符 2 个算 1 个字数,不足 1 个算 1个
func GetStrLength(str string) float64 {
var total float64
reg := regexp.MustCompile("/·|,|。|《|》|‘|'|”|“|;|:|【|】|?|(|)|、/")
for _, r := range str {
if unicode.Is(unicode.Scripts["Han"], r) || reg.Match([]byte(string(r))) {
total = total + 1
} else {
total = total + 0.5
}
}
return math.Ceil(total)
}

1:获取字符串字节的个数,并按字节挨个输出


package main

import (
 "fmt"
)

func main() {
 var str string = "abc郑闯" //共9个字节
 charray := []byte(str)  //转换为byte:一个字节对应一个数组元素
 fmt.Println(len(charray)) //获取元素的个数,结果为9
 for _, v := range charray {
   fmt.Printf("%c", v) //输出结果为:abcéé¯
 }
}

输出:

9
abcéé¯

2:获取字符串元素的个数,并按元素挨个输出


package main
import (
 "fmt"
)

func main() {
 a := "I love my family!我爱我的家人!"
 b := []rune(a)   //转换为rune:一个字符对应一个元素 (共24个)
 fmt.Println(len(b)) //获取元素的个数(24)
 for _, v2 := range b {
   fmt.Printf("%c", v2) //输出结果:I love my family!我爱我的家人!
 }
}

输出:

24
I love my family!我爱我的家人!

来源:https://blog.tanteng.me/2018/05/golang-str-length

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com