简体   繁体   English

Swift 数字名称文本到 Int

[英]Swift Numbers Name Text to Int

我刚刚实现了 SFSpeechRecognizer,因为我希望它指定一些数字,但我遇到的问题是,如果我说“一”,则 result.bestTranscription.formattedString 是“一”,但如果我说“十”,结果抛出“10”,我怎样才能设法得到由实际数字而不是交响乐“一”表示的个位数数字。

You can use NumberFormatter setting numberStyle to .spellOut and use its number(from: String) to convert your string to number.您可以使用 NumberFormatter 将numberStyle设置为.spellOut并使用其number(from: String)将您的字符串转换为数字。 If you need a string from that number just initialise a new string from it.如果您需要来自该数字的字符串,只需从中初始化一个新字符串。 Make sure if you only want to detect English words (not locale sensitive) to set the formatter locale to "en_US_POSIX"确保您是否只想检测英语单词(不区分语言环境)将格式化程序语言环境设置为“en_US_POSIX”

let string = "one"
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "en_US_POSIX")  // if you dont set locale it will use current locale so it wont detect one if the language it is not english at the devices locale
numberFormatter.numberStyle = .spellOut
numberFormatter.number(from: string)   // 1

Testing another language/locale测试另一种语言/地区

let string = "um"
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "pt_BR")
numberFormatter.numberStyle = .spellOut
numberFormatter.number(from: string)   // 1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM