如何使用Ruby将阿拉伯语/波斯语翻译成英语?

时间:2013-02-23 14:02:54

标签: ruby encoding localization type-conversion arabic

如何将具有阿拉伯语/波斯语编号的字符串转换为英语?

如果我有:

str1 = "١۲١۲"
str2 = "12١۲"
str3 = "some string that contains persian digits like ١۲"

是否有任何函数将其编码为英语,如果字符串包含这样的数字来转换它,就像最终结果一样:

str1 = "1212"
str2 = "1212"
str3 = "some string that contains persian digits like 12"

谢谢

2 个答案:

答案 0 :(得分:8)

对于这些一对一的转换,tr - 方法非常方便快捷。它在tr!

中有一个变异对应物
#encoding: utf-8

str1 = "١۲١۲"
str2 = "12١۲"
str3 = "some string that contains persian digits like ١۲"

[str1, str2, str3].each{|str| str.tr!('۰١۲۳۴۵۶۷۸۹','0123456789')}

p str1, str2, str3
#"1212"
#"1212"
#"some string that contains persian digits like 12"

答案 1 :(得分:2)

由于这不是编码而是翻译并假设您的问题只限于那些数字(0-9),您可以编写一个简单的从1到1的阿拉伯语到英语的映射,如下所示:

  arabic_to_english = {
  '٩' => 9,
  '٨' => 8,
  '٧' => 7,
  '٦' => 6,
  '٥' => 5,
  '٤' => 4,
  '٣' => 3,
  '٢' => 2,
  '١' => 1,
  '٠' => 0
}

您只需在需要时调用哈希:

   arabic_to_english['٧']

如果你把它提取到一个功能当然更好。