问题标签 [rune]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
150 浏览

string - golang 中字符串、字节和符文的行为

谁能解释一下为什么在“C”fmt.Println('h' == word[0])部分没有抛出和错误。我们正在尝试将 rune 与 byte 进行比较,所以它应该会抛出错误。谁能解释一下它背后的原因。

0 投票
1 回答
230 浏览

string - 我可以删除字符串表示([]byte)中的尾随零来比较字符串吗?

我需要比较 Go 中的字符串。问题是:我想将带重音的单词 (cafe) 与其非重音形式 (cafe) 进行比较。我要做的第一件事就是将我的重音转换string为非重音形式:

你可以在这里运行代码:https: //play.golang.org/p/-eRUQeujZET

但是每次我在一个字符串中进行这种转换时,它最终都会添加更多的符文。上面的示例打印:

由于我需要将此进程返回的字符串与首先不带“é”的对应字符串进行比较,因此我需要rune[]byte.

在运行了一些测试之后,我发现最后一个 0(有时它添加了多个)不会改变字符串表示。

我错过了什么吗?我可以只删除末尾的所有零[]byte吗?

这是我删除 0 并比较字符串的代码:

https://play.golang.org/p/HoueAGI4uUx

由于我们不能在这个领域单独工作,因此我阅读了以下文章以了解我现在所处的位置:

https://blog.golang.org/strings

https://blog.golang.org/normalization

https://unicode.org/reports/tr15/

https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/

0 投票
1 回答
211 浏览

string - string(int)、string(int32) 和 string([]int32) 都有效,但 string([]int) 无效 - 这里的基本原理是什么?

(我使用的是 Go 1.14.6。)

以下语句都将输出 chara

会导致编译错误

这种行为让我很困惑。如果处理string(int)方式相同string(int32),为什么处理string([]int)方式不同string([]int32)

0 投票
2 回答
632 浏览

string - 在 golang 中正确拆分符文

我想知道是否有一种简单的方法,例如处理代码点/符文的众所周知的函数,从符文片的中间取出一块而不会弄乱它,或者是否都需要自己编码才能下来等于或小于最大字节数。

具体来说,我要做的是将字符串传递给函数,将其转换为符文,以便我可以尊重代码点,如果切片长于某些最大字节,则从符文中心移除足够的符文以获得字节到必要的。

如果字符串只是单字节字符并且处理如下:这是简单的数学运算:

但是在一个可变字符宽度的字节字符串中,它要么需要更多的编码循环,要么会有很好的函数来简化它。有没有人有关于如何最好地用符文处理这种事情的代码示例?

这里的想法是字符串将进入的 DB 字段具有固定的最大字节长度,而不是代码点,因此需要一些从符文到最大字节的算法。从字符串中间取字符的原因只是这个特定程序的需要。

谢谢!

编辑:

一旦我发现范围运算符尊重字符串上的符文,这变得很容易只使用我发现的字符串,因为下面的答案很好。在这种情况下,我不必担心字符串是格式良好的 UTF 格式,但如果我这样做了,我现在知道 UTF 模块,谢谢!

这就是我最终得到的结果:

https://play.golang.org/p/YLGlj_17A-j

0 投票
1 回答
5597 浏览

string - 如何将字符串转换为符文?

这是我的代码片段:

的输出fmt.Printf("%+q", runeValue)是:

这些值实际上是符文,但由于返回类型Sprintf是字符串,我不能在我的地图中使用它[rune]rune。我想知道如何将字符串转换为符文,或者换句话说,我该如何处理这个问题?

0 投票
1 回答
362 浏览

go - 高位表情符号的符文文字

我们如何使用超出我认为代码点 U+265F 的符文文字的表情符号?

a1 := '\u2665'

  • 这行得通

a2 := '\u1F3A8'

  • 这会给出错误无效字符文字,多于一个字符。

有没有办法将较高位置的表情符号表示为符文文字?

https://unicode.org/emoji/charts/full-emoji-list.html

0 投票
1 回答
60 浏览

loops - 已收到符文,但未从 chan 收到 struct

我遇到了 golang 1.16 的奇怪行为。对于我的一个项目,我需要遍历字符串中的符文。所以,我创建了一个简单的迭代器,如下所示:

它工作得很好,但我还需要枚举由此产生的值。所以,我写了另一个看起来像:

它也可以完美运行。但是如果我尝试将它们组合在一起enumRunes(iterRunes(pattern)),我会遇到问题。我有两个代码片段要显示。

第一个是:

它的输出是这样的:

z是结构类型。所以,我进入了一个无限循环,因为结构由于某种原因没有更新。第二个片段:

z是符文类型,它工作正常。问题是为什么z第一个片段没有更新。先感谢您。

0 投票
2 回答
46 浏览

string - 在 go 中创建子字符串会创建一种新的符号

我正在比较字符串,有以下内容:

在此处输入图像描述

请注意,NEW 前面的“”是不同的。

现在当像这样调用我的函数时:

结果字符串令人惊讶:

在此处输入图像描述

我该怎么做才能去掉这个奇怪的符号,为什么它会这样?

0 投票
2 回答
121 浏览

go - 从字符串到符文切片的转换是否会复制?

我正在从 C 背景自学 Go。下面的代码按我的预期工作(前两个Printf()将访问字节,后两个Printf()将访问代码点)。

我不清楚的是这是否涉及任何数据复制。

换句话说:

确实会[]rune("string")创建一个符文数组并用对应的符文填充它"string",还是只是编译器弄清楚如何从字符串字节中获取符文?

0 投票
3 回答
76 浏览

string - 正确获取中文字符串的宽度