gpt4 book ai didi

ruby - 按字素拆分 Unicode 实体

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

"d̪".chars.to_a

给我

["d"," ̪"]

我如何让 Ruby 按字素拆分它?

["d̪"]

最佳答案

编辑:作为@michau 的回答说明,Ruby 2.5 引入了grapheme_clusters 方法,如果您只想迭代/枚举而不必创建数组,则还引入了each_grapheme_cluster


在 Ruby 2.0 或更高版本中,您可以使用 str.scan/\X/

> "d̪".scan /\X/
=> ["d̪"]
> "d̪d̪d̪".scan /\X/
=> ["d̪", "d̪", "d̪"]

# Let's get crazy:


> str = 'Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞'


> str.length
=> 75
> str.scan(/\X/).length
=> 6

如果出于任何原因想要匹配字素边界,可以在正则表达式中使用 (?=\X),例如:

> "d̪".split /(?=\X)/
=> ["d̪"]

ActiveSupport(包含在 Rails 中)如果由于某种原因不能使用 \X 也有办法:

ActiveSupport::Multibyte::Unicode.unpack_graphemes("d̪").map { |codes| codes.pack("U*") }

关于ruby - 按字素拆分 Unicode 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017888/

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