我编写了一个方法来纠正Bahnstra\s39e
之类的字词,并将\s39
等特殊字符替换为00DF
数组中关联的unicodes @fields
。
@fields = {"s39" => "00DF", ...}
@fields
数组包含大约50个特殊字符,我注意到由于我的correct(word)
方法,我的代码非常蹩脚!我可以改变什么才能让它更快地运作?谢谢
def correct(word)
@fields.each do |key, array|
word.gsub! "\\" + key , [array.hex].pack("U")
end
return word.gsub(/\\u([\da-fA-F]{4})/) {|m| [$1].pack("H*").unpack("n*").pack("U*")}
end
答案 0 :(得分:1)
String#gsub方法有一个Hash
作为替换的表单,因此它完全符合您的需求。
@fields = { '\s39' => 'ß', … }
word.gsub(/\\s?d+/, @fields)
更新:通过评论中OP的规范
,在正则表达式中使's'
字符可选