当前位置: 首页 > 知识库问答 >
问题:

将一个印地语数字转换为阿拉伯语数字

范志勇
2023-03-14

我在Swift中遇到了一个印地语数字集整数值的问题

这是关于我们如何将印地语转换成英语的任意数值。

想知道如何将一种语言的数字转换成另一种语言的数字吗

例如:试图将印地语数字转换为阿拉伯语

这是我在操场上试过的代码:

let string = "४"

let intParse1 = Int(string)

let numberFormat = NumberFormatter()
numberFormat.locale = Locale(identifier: "ar")

if let getOP = numberFormat.number(from: string) {
    print("output is: ", getOP)
}

这是它仅以英文显示的输出

我已经搜索了这个问题,但没有找到这种具体的解决方案,所以发布了一个新的问题。

注意:不寻找任何静态转换扩展或此类函数

编辑:我不想要这种解决方案

在Swift中将阿拉伯字符串转换为英文数字

编辑2:

我想知道为什么我们必须先把它转换成数字,然后再转换成阿拉伯语?,意味着必须先将其转换为英语?

共有3个答案

相云
2023-03-14

一个更通用的解决方案,它允许您在任何语言环境之间进行转换

extension NSNumber {
    static func from(value: String, localeIdentifier: String) -> NSNumber? {
        let numberFormatter = NumberFormatter()
        numberFormatter.locale = Locale(identifier: localeIdentifier)

        return numberFormatter.number(from: value)
    }

    func to(localeIdentifier: String) -> String {
        let numberFormatter = NumberFormatter()
        numberFormatter.locale = Locale(identifier: localeIdentifier)

        return numberFormatter.string(from: self) ?? "<undefined>"
    }
}

print("४ is the number \(NSNumber.from(value: "४", localeIdentifier: "hi")!)")
print("5 is \(NSNumber(value: 5).to(localeIdentifier: "ar")) in arabic")

输出将是:

४ is the number 4
5 is ٥ in arabic

对编辑2的答复:

数字字符串值只是数字值的表示形式NumberFormatter始终使用数值作为真值点,并使用它能够转换为不同的语言环境。这就是为什么如果使用此类,必须首先转换为数值。

但是,您可以编写自己的函数,该函数不知道数值,只在字符串之间映射以转换数值,例如:

var hindiToArabicMap: [String: String] = ["४": "٥"]
print("४ in arabic is \(hindiToArabicMap["४"]!)")

输出将是:

४ in arabic is ٥
邓令
2023-03-14

请尝试以下代码:

let Formatter = NumberFormatter()
Formatter.locale = Locale(identifier: "EN")
if let hindiNumber = Formatter.number(from: "४") {
    Formatter.locale =  Locale(identifier: "ar")
    let formattedNumber = Formatter.string(from: hindiNumber)
    print(formattedNumber!)
}
公西飞鸾
2023-03-14

说明:NumberFormatter将数字转换为另一种语言的数字,而不是将一种语言的字符串转换为另一种语言。首先我们要把一种语言的数字转换成另一种语言的数字。

文件说明:参考

NumberFormatter实例格式化包含NSNumber对象的单元格的文本表示形式,并将数值的文本表示形式转换为NSNumber对象。表示法包括整数、浮点和双精度;浮点数和双精度浮点可以格式化为指定的十进制位置。NumberFormatter对象还可以对单元格可以接受的数值施加范围。

直接将此扩展用于Swift 4:

extension String {
    func convertToArbic () -> String? {
        let formatter = NumberFormatter()
        formatter.locale = Locale(identifier: "hi")
        guard let number = formatter.number(from:self ) else{
            return nil
        }
        formatter.locale = Locale(identifier: "ar")
        guard let number2 = formatter.string(from: number) else{
            return nil
        }
        return number2
    }
}

// use
let string = "४"
if let arbNumber = string.convertToArbic() {
    print(arbNumber)
}
else{
    print("Unable to get arabic number")
}

输出:

 类似资料:
  • 问题内容: 我想将 包含英文数字的a转换为阿拉伯数字,所以我将其转换为 输出 还有另一种更有效的方法吗? 问题答案: 这使字符串长度为3036的版本比原来的版本提高5倍。这还会检查以确保您只更改数字。如果不执行if / else检查,则速度大约是6倍。 如果字符不正确/放错了位置,请原谅我。我不得不从另一个来源找到其中一些。

  • 如何在静态编程语言中将波斯语/阿拉伯语数字转换为英语?我在java中看到过类似的问题,但它不符合我的要求。当我在使用波斯本地化数字的设备中获得日期时,波斯和服务器不能将此字符串转换为日期时间。这里是我在波斯本地化设备中收到的日期: "۲۰۲۰/۰۸/۲۱" 这些是波斯/阿拉伯数字 (۰ - 我需要在科特林玩一玩来表演这个。

  • 在基于web的应用程序中,我们希望更改fa_IR区域设置中的数字格式。(波斯语和阿拉伯语数字的Unicode不同于拉丁语数字)。java不支持此特性(对于基于swing的应用程序,可以使用形状数字http://docs.oracle.com/javase/tutorial/i18n/text/shapeddigits.html) 无论如何,这个格式化程序将用unicode波斯语数字替换ASCII数

  • Adobe 亚洲语言书写器 借助 Adobe 亚洲语言书写器,您可以使用中东和南亚语言创建内容。您可以键入或混合键入阿拉伯语、希伯来语、英语和其他语言。 您可以在“段落”面板菜单(窗口 > 段落 > 面板菜单)中的可用书写器之间进行选择。例如,您可以使用中东和南亚语言单行书写器或中东和南亚语言逐行书写器。 有关 Illustrator 中支持的其他亚洲语言的更多信息,请参阅适用于亚洲语言文字的书写

  • 启用中东语言功能 若要在 Photoshop 界面中显示中东文字选项,请执行以下操作: 选取“编辑”>“首选项”>“文字”(Windows) 或“Photoshop”>“首选项”>“文字”(Mac OS)。 在“选取文本引擎选项”部分中,选取“中东”。 单击“确定”,并重新启动 Photoshop。 选取“文字”>“语言选项”>“中东语言功能”。 文本方向 要创建阿拉伯语和希伯来语内容,您可以将默

  • 问题内容: 我正在评估NLTK处理阿拉伯文本的能力,这项研究旨在分析和提取情感。 问题如下: NTLK是否可以处理并允许分析阿拉伯文本? python是否能够操纵\标记阿拉伯文本? 我可以使用Python解析和存储阿拉伯文本吗? 如果python和NTLK不是完成这项工作的工具,那么您会推荐哪些工具(如果存在)? 谢谢。 编辑 根据研究: NTLK仅能阻止阿拉伯文本:链接 Python支持UTF-