首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Go中迭代unicode字符串时跳过n个代码点

在Go中迭代unicode字符串时跳过n个代码点
EN

Stack Overflow用户
提问于 2014-04-20 00:00:43
回答 2查看 89关注 0票数 4

在Go中,使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i := 0; i < len(myString); i++{ 
    doSomething(myString[i])
}

只访问字符串中的单个字节,而迭代字符串则通过

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i, c := range myString{ 
    doSomething(c)
}

迭代单个Unicode代码点(在Go中称为rune),这可能跨越多个字节。

我的问题是:如何在使用range Mystring迭代字符串时跳到前面?continue可以跳过一个unicode代码点,但如果您想跳过三个代码点,就不可能只执行i += 3。那么,通过n个编码点前进的最惯用的方式是什么呢?

问这个问题在金刚坚果邮寄名单,并得到了答复,感谢名单上的一些乐于助人。然而,有人给我发短信,建议我在堆栈溢出问题上创建一个自我回答的问题,以避免下一个人遇到同样的问题。这就是现在的情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-20 00:42:09

我会考虑避免转换到[]rune,并直接对其进行编码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
skip := 0
for _, c := range myString {
    if skip > 0 {
        skip--
        continue
    }
    skip = doSomething(c)
}

像这样一个一个地跳过runes看起来效率很低,但是它的工作量与转换到[]rune的工作量是一样的。这段代码的优点是它避免了分配符文片段,这将大约是原始字符串的4倍(取决于您拥有的较大代码点的数量)。当然,转换到[]rune要简单一些,所以您可能更喜欢这样。

票数 6
EN

Stack Overflow用户

发布于 2014-04-20 00:01:32

事实证明,这可以很简单地通过将字符串转换成一段符文来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
runes := []rune(myString)
for i := 0; i < len(runes); i++{
    jumpHowFarAhead := doSomething(runes[i])
    i += jumpHowFarAhead
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23179824

复制
相关文章
Go map迭代时乱序的原因分析
在Go语言的runtime包中,mapiterinit函数是用于初始化map的遍历迭代器的。它的作用是为map的遍历提供必要的初始化操作。
fliter
2023/06/18
3830
Go map迭代时乱序的原因分析
js --- 中字符串与unicode编码
2、charCodeAt ():在第一个的基础上,返回的是字符的unicode编码
小蔚
2019/09/11
4.9K0
Unicode 字符串
引号前小写的"u"表示这里创建的是一个 Unicode 字符串。如果你想加入一个特殊字符,可以使用 Python 的 Unicode-Escape 编码。如下例所示:
用户8442333
2021/05/27
1K0
sourceTree安装时跳过登录
3.使用运行或资源管理器输入%LocalAppData%\Atlassian\SourceTree\进入当前用户的SourceTree目录
流柯
2021/09/26
1.8K0
sourceTree安装时跳过登录
Unicode 颜文字(emoji)格式和 Go 代码处理
前几天时间测试同学在我们的前端输入了颜文字,之后软件就出 bug 了。借修 bug 机会我花了点时间学习了一下 Unicode 颜文字(emoji)。本文记录我对 emoji 的一些认识,并且简单介绍一下我为此而做的一个 Go 语言颜文字提取库的用法。还请各位读者不吝指教。
amc
2020/03/21
5.6K0
Unicode 颜文字(emoji)格式和 Go 代码处理
unicode字符串解析
在http接口接收时,很多接口提供方都喜欢把汉字通过unicode的方式传过来,而数字和字母保持不变,就像这样。
逝兮诚
2019/10/30
1.4K0
Maven打包时跳过测试类
Maven打包时跳过测试类 在springboot项目中,默认会有Test测试类,如果执行maven打包命令,会运行测试类,而这是不必要 最简单的方法,在pom文件设置一个maven自带变量即可 <properties> <skipTests>true</skipTests> </properties>
4xx.me
2022/06/09
4350
Maven打包时跳过测试类
python替换第n个字符串_替换字符串中第n个出现的子字符串
我已经想出了下面的方法,它还考虑了替换所有出现在左边或右边的“旧”字符串的选项。当然,由于标准str.replace工作得很好,因此没有替换所有引用的选项。def nth_replace(string, old, new, n=1, option='only nth'):
用户7886150
2021/01/11
4.8K0
2023-09-05:请用go语言编写。一个图像有n个像素点,存储在一个长度为n的数组arr里, 每个像素点的取值范围[0,s]
2023-09-05:请用go语言编写。一个图像有n个像素点,存储在一个长度为n的数组arr里,
福大大架构师每日一题
2023/09/06
2080
2023-09-05:请用go语言编写。一个图像有n个像素点,存储在一个长度为n的数组arr里, 每个像素点的取值范围[0,s]
maven打包时跳过测试「建议收藏」
有一个maven项目,我clone一下最新的代码。准备打包(maven package),没想到在执行到TEST阶段报错。百思不得其解,决定跳过测试去打包,然后部署。
全栈程序员站长
2022/06/27
6510
Golang 需要避免踩的 50 个坑(二)
Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷。如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到。
aoho求索
2019/03/07
1.2K0
Golang的字符编码与regexp
最近在使用 Golang 的 regexp 对网络流量做正则匹配时,发现有些情况无法正确进行匹配,找到资料发现 regexp 内部以 UTF-8 编码的方式来处理正则表达式,而网络流量是字节序列,由其中的非 UTF-8 字符造成的问题。
Seebug漏洞平台
2021/09/08
1.3K0
Golang的字符编码与regexp
Unicode&UTF&码点关系
转自:https://github.com/acmerfight/insight_python/edit/master/Unicode_and_Character_Sets.md
俺也想起舞
2019/07/24
1K0
如何去除字符串中的 "\n" ?
我最近负责的工作是设计一个 SQL 解析引擎。简单来说,就是将一个 SQL 表达式字符串,解析为一颗对象树,从而执行查询等一系列操作。
程序员鱼皮
2021/03/12
4.6K0
如何去除字符串中的 "\n" ?
我最近负责的工作是设计一个 SQL 解析引擎。简单来说,就是将一个 SQL 表达式字符串,解析为一颗对象树,从而执行查询等一系列操作。
程序员鱼皮
2021/03/25
3.1K0
Go 三个点(...)用法
s如果使用s...符号解压缩切片,则可以将切片直接传递给可变参数函数。在这种情况下,不会创建新的切片。
孤烟
2020/09/27
3.2K0
Starlight:帮助Python代码在Go中运行的工具
I’d like to announce starlight - https://github.com/starlight-go/starlight.
李海彬
2018/12/26
2.1K0
Go语言之父带你重新认识字符串、字节、rune和字符
文章篇幅还是挺长的,大家时间都很宝贵所以我先把文章探究的问题的结论放在前面,有时间的同学还是建议整篇读一下。
KevinYan
2020/02/18
8940
go中字符串连接
贵哥的编程之路
2023/10/16
990
go中字符串连接
Go语言核心36讲(Go语言实战与应用十四)--学习笔记
除了这些,我们还一起讨论了测试 Go 程序的主要方式。这涉及了 Go 语言自带的程序测试套件,相关的概念和工具包括:
郑子铭
2021/11/27
2460
Go语言核心36讲(Go语言实战与应用十四)--学习笔记

相似问题

Go unicode代码点

11

如何迭代Java字符串的unicode代码点?

47

转换unicode字符串以查看unicode代码点

21

跳过scala可迭代中的前N个元素

10

java从unicode代码点获取unicode表示字符串

290
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文