gpt4 book ai didi

ruby - 如何使用 gsub 替换 ruby​​ 中的多字节字符?

转载 作者:数据小太阳 更新时间:2023-10-29 08:17:41 25 4
gpt4 key购买 nike

当记录包含多字节字符时,我在使用 Mongoid 将记录保存在 MongoDB 中时遇到问题。这是字符串:

a="Chris \xA5\xEB\xAE\xDFe\xA5"

我首先将它转换为二进制,然后像这样gsub:

a.force_encoding("BINARY").gsub(0xA5.chr,"oo")

...效果很好:

=> "Chris oo\xEB\xAE\xDFeoo"

但是如果我使用Regexp,我似乎不能使用chr方法:

a.force_encoding("BINARY").gsub(/0x....?/.chr,"")
NoMethodError: undefined method `chr' for /0x....?/:Regexp

有人遇到同样的问题吗?

非常感谢...

最佳答案

你可以通过插值来做到这一点

a.force_encoding("BINARY").gsub(/#{0xA5.chr}/,"") 

给予

"Chris \xEB\xAE\xDFe"

编辑:根据评论,这里是一个将二进制编码字符串转换为 ascii 表示并对该字符串执行正则表达式的版本

a.unpack('A*').to_s.gsub(/\\x[A-F0-9]{2}/,"")[2..-3] #=>"Chris "

最后的[2..-3]是去掉开头的["and and trailing"]

注意:要摆脱您也可以使用的特殊字符

a.gsub(/\W/,"") #=> "Chris"

关于ruby - 如何使用 gsub 替换 ruby​​ 中的多字节字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10993080/

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