gpt4 book ai didi

go - 在 Go 中将字符串拆分为 10kb 的 block

转载 作者:IT老高 更新时间:2023-10-28 13:10:28 25 4
gpt4 key购买 nike

我在 Go 中有一个大字符串,我想把它分成更小的 block 。每个 block 最多应为 10kb。 block 应该在 rune 上分割(而不是在 rune 中间)。

在 Go 中执行此操作的惯用方式是什么?我应该只循环字符串字节的范围吗?我是否缺少一些有用的 stdlib 包?

最佳答案

使用 RuneStart扫描 rune 边界。在边界处对字符串进行 slice 。

var chunks []string
for len(s) > 10000 {
i := 10000
for i >= 10000 - utf8.UTFMax && !utf8.RuneStart(s[i]) {
i--
}
chunks = append(chunks, s[:i])
s = s[i:]
}
if len(s) > 0 {
chunks = append(chunks, s)
}

使用该方法,应用程序检查 block 边界处的几个字节而不是整个字符串。

编写代码是为了在字符串不是有效的 UTF-8 编码时保证进度。您可能希望将此情况作为错误处理或以不同的方式拆分字符串。

playground example

关于go - 在 Go 中将字符串拆分为 10kb 的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511952/

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