"\" 但如果我再添加一些字符,则不会检测到这些字符: -6ren">
gpt4 book ai didi

ruby - 多字节字符和 tr 命令

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:25 25 4
gpt4 key购买 nike

我正在尝试使用 tr 将一些单字节字符转换为多字节字符。

当我只有一个字符要转换时,转换有效:

"\\".tr('\\', '\')
# => "\"

但如果我再添加一些字符,则不会检测到这些字符:

"\\".tr("\\¥'", "\¥’")
# => "\\"

为什么会这样,如何转换多字节字符?

我正在使用 Ruby 2.3.3。此外,我得到:

"\\".encoding #=> #<Encoding:UTF-8>
"\\¥'".encoding #=> #<Encoding:UTF-8>
"\¥’".encoding #=> #<Encoding:UTF-8>

这是Ruby的bug吗?

最佳答案

文字反斜杠必须放在最后。来自documentation :(强调)

The backslash character \ can be used to escape ^ or - and is otherwise ignored unless it appears at the end of a range or the end of the from_str or to_str:

"\\abc".tr("\\abc", "/def") #=> "\\/de"

相当于:

"\\abc".tr("abc", "/def") #=> "\\/de"

对比:

"\\abc".tr("abc\\", "def/") #=> "/def"

关于ruby - 多字节字符和 tr 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41886521/

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