如何使用Ruby将阿拉伯语/波斯语数字翻译成英语?
如何将带有阿拉伯/波斯数字的字符串转换为英语 如果我有:如何使用Ruby将阿拉伯语/波斯语数字翻译成英语?,ruby,encoding,localization,type-conversion,arabic,Ruby,Encoding,Localization,Type Conversion,Arabic,如何将带有阿拉伯/波斯数字的字符串转换为英语 如果我有: str1 = "١۲١۲" str2 = "12١۲" str3 = "some string that contains persian digits like ١۲" 是否有任何函数将其编码为英语,如果字符串包含此类数字,则将其转换为英语,最终结果如下: str1 = "1212" str2 = "1212" str3 = "some string that contains persian digits like 12" 谢谢因
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-9,您可以编写一个简单的从阿拉伯语到英语的1对1映射,如下所示:
arabic_to_english = {
'٩' => 9,
'٨' => 8,
'٧' => 7,
'٦' => 6,
'٥' => 5,
'٤' => 4,
'٣' => 3,
'٢' => 2,
'١' => 1,
'٠' => 0
}
只要在需要时调用哈希:
arabic_to_english['٧']
当然,如果将其提取到函数中会更好。对于这些一对一转换,-方法非常方便和快速。它在tr中有一个突变的对应物
我不认为这是编码,更像是翻译,因为它们是数字1和2的阿拉伯语表示。这不是编码。为此,您需要一个能够理解阿拉伯数字的库,而不仅仅是字符。1到9是颠倒的,“٩”=>9等。很抱歉,现在更正。谢谢你指出这一点。正是我所需要的
#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"