如何将具有阿拉伯语/波斯语编号的字符串转换为英语?
如果我有:
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 :(得分:8)
对于这些一对一的转换,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"
答案 1 :(得分:2)
由于这不是编码而是翻译并假设您的问题只限于那些数字(0-9),您可以编写一个简单的从1到1的阿拉伯语到英语的映射,如下所示:
arabic_to_english = {
'٩' => 9,
'٨' => 8,
'٧' => 7,
'٦' => 6,
'٥' => 5,
'٤' => 4,
'٣' => 3,
'٢' => 2,
'١' => 1,
'٠' => 0
}
您只需在需要时调用哈希:
arabic_to_english['٧']
如果你把它提取到一个功能当然更好。