1

如何将一些具有阿拉伯/波斯数字的字符串转换为英文?

就像我有:

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

是否有任何函数可以将其编码为英文,如果字符串包含这样的数字以将其转换为最终结果将是:

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

谢谢

4

2 回答 2

9

对于这些一对一的转换,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"
于 2013-02-23T20:02:55.227 回答
2

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

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

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

   arabic_to_english['٧']

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

于 2013-02-23T14:49:34.480 回答