gpt4 book ai didi

ruby - 用 Ruby 将单词分解成字母

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

在我的语言中有复合字母或复合字母,它们由多个字符组成,例如“ty”、“ny”甚至“tty”和“nny”。我想编写一个 Ruby 方法(拼写),根据这个字母表将单词标记为字母:

abc=[*%w{tty ccs lly ggy ssz nny dzs zzs sz zs cs gy ny dz ty ly q w r t z p l k j h g f d s x c v b n m y}.map{|z| [z,"c"]},*"eéuioöüóőúűáía".split(//).map{|z| [z,"v"]}].to_h

生成的散列键显示了字母表中现有的字母/复合字母,还显示了哪个字母是辅音字母(“c”)哪个字母是元音字母(“v”),因为稍后我想使用它哈希将单词分解为音节。不小心在单词公共(public)边界处形成复合字母的复合词当然不能通过该方法解决。

例子:

spell("csobolyó") => [ "cs", "o", "b", "o", "ly", "ó" ]
spell("nyirettyű") => [ "ny", "i", "r", "e", "tty", "ű" ]
spell("dzsesszmuzsikus") => [ "dzs", "e", "ssz", "m", "u", "zs", "i", "k", "u", "s" ]

最佳答案

您也许可以开始查看 String#scan ,这似乎为您的示例提供了不错的结果:

"csobolyó".scan(Regexp.union(abc.keys))
# => ["cs", "o", "b", "o", "ly", "ó"]
"nyirettyű".scan(Regexp.union(abc.keys))
# => ["ny", "i", "r", "e", "tty", "ű"]
"dzsesszmuzsikus".scan(Regexp.union(abc.keys))
# => ["dzs", "e", "ssz", "m", "u", "zs", "i", "k", "u", "s"]

最后一个案例与您预期的输出不匹配,但它匹配 your statement in the comments

I sorted the letters in the alphabet: if a letter appears earlier, then it should be recognized instead of its simple letters. When a word contains "dzs" it should be considered to "dzs" and not to "d" and "zs"

关于ruby - 用 Ruby 将单词分解成字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332888/

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