我正在解析简单的字符串输入,如:“Hello world!:-)”并将它们转换为一个数组,分割单词并可能做一些修改。我已经生成了以下可以工作的代码,但它似乎不是Ruby的惯用语。我该如何改进它?如何编写这个字符串解析更多的Ruby惯用语?
$mapping = Hash[
"X" => "CODE_X",
"Y" => "CODE_Y",
"Z" => "CODE_Z",
]
def translate(input)
result = []
tmp = ""
input.each_char do |c|
if $mapping.has_key?(c)
if result != ""
result << "normal " + tmp
tmp = ""
end
result << "special " + $mapping[c]
else
tmp += c
end
end
if tmp != ""
result << "normal " + tmp
end
return result
end
它似乎包含不必要的许多行,使其难以阅读。它是做什么的,也许一个例子有助于:
translate("HelloXworldYZ") =>
["normal Hello", "special CODE_X", "normal world", "special CODE_Y", "special CODE_Z"]
或英文:解析字符串面向字符,并再次串连的字符。将它们作为“普通”+字符串添加到结果数组中,直到(1)没有更多字符或(2)有特殊字符(映射),它们将该字符串添加到数组中,并将特殊字符添加为“特殊” +映射并继续处理字符串的其余部分。
你能描述简单的英语改造的探讨逻辑是什么? –
@SergioTulentsev好吧,试了一下。看到我编辑的问题。 – Erandir
它对我来说看起来不像普通的英语。 – sawa