Golang中获取中文字符串的子串字符位置及截取子串
Golang中获取中文字符串的子串字符位置及截取子串
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wowzai/article/details/8941865
昨天准备用golang做一个简单的文本分析,需要简单的对字符串进行一些操作,在查看了strings和strconv库时,我没找到截取字符串的函数,同时strings.Index返回的是子串的字节位置,例如这个例子:strings.Index("早上好,张先生!","好") 的返回值是6,而不是2(从0开始算)。
于是我自己写了一个处理中文的返回字符串子串位置的函数,思想其实很简单,首先通过strings库中的Index函数获得子串的字节位置,再通过这个位置获得子串之前的字节数组pre,再将pre转换成[]rune,获得[]rune的长度,便是子串之前字符串的长度,也就是子串在字符串中的字符位置,具体代码如下:
func UnicodeIndex(str,substr string) int {
// 子串在字符串的字节位置
result := strings.Index(str,substr)
if result >= 0 {
// 获得子串之前的字符串并转换成[]byte
prefix := []byte(str)[0:result]
// 将子串之前的字符串转换成[]rune
rs := []rune(string(prefix))
// 获得子串之前的字符串的长度,便是子串在字符串的字符位置
result = len(rs)
}
return result
}
注意,这里用的是string.Index函数,类似的,也可以写中文字符串的类似strings中的IndexAny,LastIndex等函数
同样的思想,我也写了一个截取中文字符串的函数,如下:
func SubString(str string,begin,length int) (substr string) {
// 将字符串的转换成[]rune
rs := []rune(str)
lth := len(rs)
// 简单的越界判断
if begin < 0 {
begin = 0
}
if begin >= lth {
begin = lth
}
end := begin + length
if end > lth {
end = lth
}
// 返回子串
return string(rs[begin:end])
}
如有错误,欢迎指正。
————————————————
版权声明:本文为CSDN博主「wowzai」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wowzai/article/details/8941865
Golang中获取中文字符串的子串字符位置及截取子串相关推荐
- php繁体拼音字母,php获取中文字符串的首字符拼音字母
$str="这是一个测试程序1"; echo getFirstCharCode($str); function getFirstCharCode($str){ $str= icon ...
- golang中获取字符串长度的办法
1.不同字符与获取字符串长度 获取字符串长度,是字符串操作的重要方法.理论来说,获取字符串长度,只要从头到尾查找一遍就可以了.但遗憾的是,不同字符具有不同的编码格式.拉丁字母一个字符只要一个字节就行, ...
- go golang 中获取string 长度
新博客地址(shankusu.me) 以下内容转自自 https://blog.csdn.net/skh2015java/article/details/53258249 一.获取字符串长度的几种方法 ...
- mysql得到中文的拼音_在MySQL中获取中文的拼音或转换中文替拼音
在MySQL中获取中文的拼音或转换中文为拼音 MySQL ------------------------------------- 分页:select * from xxx limit 0,10 ? ...
- 按照拼音对数组中的中文字符串排序的算法
按照拼音对数组中的中文字符串排序的算法,不是很难,这里直接放上代码,Demo去最下面找: 注:里面用到一个叫George的牛人写的中文转拼音首字母的函数pinyinFirstLetter,因为内容实在 ...
- jsp java json解析,jsp中获取json字符串,并解析
JqueryDemo1 function showData() { var str='{ "name": "John" }';//json标准格式 var ob ...
- 如何提取代码中的中文字符串
前言 在一般情况下,程序中的中文字符串都是写在某个文件中读取(例如json),但是大部分时候我们都是直接写入到代码中,这个时候如果我们想把字符串提取出来就需要一个一个去找,或者通过IDE提供的字符串匹 ...
- 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?
在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Posted on 2008-07-13 12:00 尹合磊 阅读(1902) 评论(0) 编辑 收藏 所属分类: ASP.N ...
- .net core通过PinYinConverterCore实现汉字转拼音,获取中文字符串首字母
文章目录 一.事故现场 二.解决方法 1.安装方法 2.代码示例 #中文转拼音 #获取中文字符串首字母 一.事故现场 项目之前使用的.net framework,可以通过引用 Microsoft.In ...
最新文章
- 深度学习 CNN trick 合集
- 单分子实时测序技术的原理与应用
- python 判断字符串开头_python 怎么判断字符串开头
- ios键盘横屏_平板电脑就只能追剧玩游戏?看这款外设键盘如何让iPad爱上办公...
- 从天天爱消除和节奏大师的用户对于论坛形式的分析
- [Unity3D] DOTween和Curvy插件,以及UI-Extension
- java 纳秒 秒_如何使用TimeUnit枚举将纳秒转换为秒?
- 介于上海与江苏的地铁小户型
- 总结——硬件工程师面试容易碰到的问题
- redis aof 文件重写机制
- 让逆向工程师们头疼的代码混淆,就像永远也走不出的“浪浪山”
- laravel 邮件发送
- SONiC+P4实践——P4Runtime下发ACL表项
- mysql hint是什么_mysql hint是什么意思
- Getting started with wxPython
- matlab读取wav,播放wav,绘制语音波形图
- sobel算子原理_「学术论文」基于Sobel算法图像边缘检测的FPGA实现
- 2023年6月PMP®项目管理认证招生简章
- 使用Loadrunner打开WebTours录制脚本时提示“应用程序已被Java安全阻止”如何解决
- Oracle的Fn无服务器平台添加了Prometheus支持和安装于Kubernetes的Helm Chart