Я конвертирую входные данные, которые в идеале всегда имеют следующую строку внутри:
本 資料 由 (上市 公司) «Название компании в китайских иероглифах« 公司 提供
До сих порУ меня есть следующее:
input = gets
input.gsub!(/(本資料由\(上市公司\))(.{1,10})(公司提供)/) {"
The following information has been provided by: #{$2}\n"}
Company_making_the_Announcement = /(The following information has been provided by: )(.+)/.match(input)
if Company_making_the_Announcement[2].match "如興"
input.gsub! Company_making_the_Announcement[2], "Roo Hsing Co., Ltd (TSEC:4414)"
elsif Company_making_the_Announcement[2].match "新潤"
input.gsub! Company_making_the_Announcement[2], "Shin Ruenn development Co., LTD. (GTSM:6186)"
elsif Company_making_the_Announcement[2].match "遠東商銀"
input.gsub! Company_making_the_Announcement[2], "Far Eastern International Bank Ltd. (TSEC:2845)"
end
Приведенный выше код работает просто отлично, но он немного неуклюжий, тем более что список компаний исчисляется тысячами, а код будет увеличиваться по мере того, как я добавляю новую компанию.Таким образом, я думал о более эффективном и элегантном способе сделать это.Я думал, что работа с массивами / хешами может помочь, но мне не повезло, так как приведенный ниже код продолжает возвращать ошибки, независимо от того, как я изменяю это:
companieslist = [{chin: '如興', eng: 'Roo Hsing Co., Ltd (TSEC:4414)' }, {chin: '新潤', eng: 'Shin Ruenn development Co., LTD. (GTSM:6186)' }]
Company_making_the_Announcement = /(The following information has been provided by: )(companieslist[:chin])/.match(input)
If Company_making_the_Announcement[2].match (companieslist[:chin])
Input.gsub! Company_making_the_Announcement[2], (companieslist[:eng])
end
Итак, вкратце, что быбыть эффективным способом сопоставить значения в массиве (китайские имена) со значениями в другом (английские имена) и заменить первое значение на второе, когда они появляются во входных данных?
Большое спасибо