gpt4 book ai didi

Golang中文字符串截取函数实现原理

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Golang中文字符串截取函数实现原理由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

在golang中可以通过切片截取一个数组或字符串,但是当截取的字符串是中文时,可能会出现的问题是:由于中文一个字不只是由一个字节组成,所以直接通过切片可能会把一个中文字的编码截成两半,结果导致最后一个字符是乱码.

例如:

想要截取前四个字 。

?
1
2
name := "我是胡八一"
fmt.Println( "name[:4] = " ,name[:4])

执行后得到的结果会是这样的:

?
1
name[: 4 ] = 我?

解决方法: 先将其转为[]rune,再截取后,转会string 。

?
1
2
nameRune := []rune(name)
fmt.Println("string(nameRune[:4]) = ",string(nameRune[:4]))

运行结果:

string(nameRune[:4]) =  我是胡八 。

好了弄懂了原理我们来写一个完整的Golang中文字符串截取函数 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func SubString( str string, begin, length int ) string {
   fmt.Println( "Substring =" , str )
   rs : = []rune( str )
   lth : = len (rs)
   fmt.Printf( "begin=%d, end=%d, lth=%d\n" , begin, length, lth)
   if begin < 0 {
     begin = 0
   }
   if begin > = lth {
     begin = lth
   }
   end : = begin + length
 
   if end > lth {
     end = lth
   }
   fmt.Printf( "begin=%d, end=%d, lth=%d\n" , begin, length, lth)
   return string(rs[begin:end])
}

实现Golang中文字符串截取函数很简单利用golang原理语句就可实现 。

最后此篇关于Golang中文字符串截取函数实现原理的文章就讲到这里了,如果你想了解更多关于Golang中文字符串截取函数实现原理的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com