加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将%uXXXX替换为Ruby中相应的Unicode代码点

发布时间:2020-12-17 02:23:48 所属栏目:百科 来源:网络整理
导读:我有包含%uXXXX子串的文件名,其中XXXX是十六进制数字/数字,例如%u0151等.我通过应用URI.unescape获得了这些文件名,它能够将%XX子串替换为相应的字符,但是%uXXXX子串保持不变.我想用应用String#gsub的相应Unicode代码点替换它们.我尝试了以下,但没有成功
我有包含%uXXXX子串的文件名,其中XXXX是十六进制数字/数字,例如%u0151等.我通过应用URI.unescape获得了这些文件名,它能够将%XX子串替换为相应的字符,但是%uXXXX子串保持不变.我想用应用String#gsub的相应Unicode代码点替换它们.我尝试了以下,但没有成功:

"rep%u00fcl%u0151".gsub(/%u([0-9a-fA-F]{4,4})/,'u1')

我明白了:

"repu00fclu0151"

而不是这个:

"repül?"

解决方法

试试这段代码:

string.gsub(/%u([0-9A-F]{4})/i){[$1.hex].pack("U")}

在评论中,cremno有一个更快的解决方案:

string.gsub(/%u([0-9A-F]{4})/i){$1.hex.chr(Encoding::UTF_8)}

在评论中,bobince增加了重要的限制,值得全面阅读.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读