2013-02-23 170 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

相關問題