2013-02-23 141 views
1

如何将一些具有阿拉伯/波斯文数字的字符串转换为英文?如何使用Ruby将阿拉伯语/波斯语数字翻译成英语?

一样,如果我有:

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

一个变异副本,我不认为这是编码,更像是翻译,因为这些是数字1和2 – fmendez 2013-02-23 14:39:18

+0

这不是编码的阿拉伯数字表示。为此,你需要一个能够理解阿拉伯数字的图书馆,而不仅仅是人物。 – Linuxios 2013-02-23 14:39:43

回答

7

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

#encoding: utf-8 

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

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

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

完全正是我需要的 – 2013-02-24 00:59:34

2

由于这不是编码,而是翻译,并假设您的问题仅限于这些数字(0-9),您可以编写简单的1对1映射从阿拉伯文到英文,somet兴这样的:

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

而你只需要调用哈希需要时:

arabic_to_english['٧'] 

更好,如果你提取到理所当然的功能这一点。

+0

1至9倒过来,'9'=> 9等。 – steenslag 2013-02-23 20:16:19

+0

对不起,现在纠正。感谢您指出了这一点。 – fmendez 2013-02-23 20:29:24

相关问题