如何在iOS Swift中将UITextField中任何语言环境中输入的数字转换为英文数字



我正试图在iOS Swift中的UITextfield中从用户那里获取一些十进制数字。现在,用户可以根据iOS中的区域设置以他或她的本地数字格式输入数字。我想把这个用户母语的号码转换成英语号码。我在这个网站(stackoverflow.com(上搜索了很多,大多数答案都是从一个语言环境(中文、阿拉伯语或波斯语(转换成英语,但我想把输入到任何语言环境格式的数字转换成英语。我该怎么做?因此,简而言之,我的问题是,在UITextField中输入的数字是印地语、阿拉伯语、波斯语、汉语还是根据地区的任何格式,我想将其转换为英语数字格式。

您可以使用NumberFormatter

检查以下示例:

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let localNumberInStr = "૨૩"
guard let str = numberFormatter.number(from: localNumberInStr) else {return}
print(str)  //"23"

当您检查设备区域设置时,您知道用户正在使用哪个区域设置。

let locale = Locale.current

为了改进Dharmesh答案,下面是一个封装在帮助器方法中的答案,供整个代码使用。显然,它假设在通过UITextField获取用户输入时,已经考虑了用户区域设置中设置的数字。

func convertLocaleNumberIntoEnglish(localeNumberString: String?) -> String? {
guard let ulocaleNumberString = localeNumberString else {return nil}
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let localNumberInStr = ulocaleNumberString
guard let number = numberFormatter.number(from: localNumberInStr) else {return nil}
let str = String(format:"%f", number.doubleValue) 
return str
}

相关内容

  • 没有找到相关文章