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

如何使用Ruby将阿拉伯语/波斯语数字翻译成英语?,ruby,encoding,localization,type-conversion,arabic,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" 谢谢因

如何将带有阿拉伯/波斯数字的字符串转换为英语

如果我有:

str1 = "١۲١۲"
str2 = "12١۲"
str3 = "some string that contains persian digits like ١۲"
是否有任何函数将其编码为英语,如果字符串包含此类数字,则将其转换为英语,最终结果如下:

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

谢谢

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

  arabic_to_english = {
  '٩' => 9,
  '٨' => 8,
  '٧' => 7,
  '٦' => 6,
  '٥' => 5,
  '٤' => 4,
  '٣' => 3,
  '٢' => 2,
  '١' => 1,
  '٠' => 0
}
只要在需要时调用哈希:

   arabic_to_english['٧']

当然,如果将其提取到函数中会更好。

对于这些一对一转换,-方法非常方便和快速。它在tr中有一个突变的对应物


我不认为这是编码,更像是翻译,因为它们是数字1和2的阿拉伯语表示。这不是编码。为此,您需要一个能够理解阿拉伯数字的库,而不仅仅是字符。1到9是颠倒的,“٩”=>9等。很抱歉,现在更正。谢谢你指出这一点。正是我所需要的
#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"