How to translate Arabic/Persian numbers to english

2019-03-01 01:24发布

How can I convert some string that has Arabic/Persian number to English ?

Like if I have :

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

Is there any function to encode it to english, and if the string contain such number to convert it like end results will be :

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

Thanks

2条回答
Melony?
2楼-- · 2019-03-01 01:39

For these one on one transformations the tr-method is very convenient and fast. It has a mutating counterpart in 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"
查看更多
Ridiculous、
3楼-- · 2019-03-01 01:43

Since this is not encoding but translation and assuming your problem limits to only those numbers (0-9), you could write a simple 1-to-1 mapping from arabic to english, something like this:

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

And you just call the hash whenever needed:

   arabic_to_english['٧']

Better if you extract this into a function of course.

查看更多
登录 后发表回答