Swift 数字名称文本到 Int

Swift Numbers Name Text to Int

我刚刚实现了 SFSpeechRecognizer,因为我希望它指示一些数字,但我遇到的问题是,如果我说 "one",那么 result.bestTranscription.formattedString 就是 "one",但是如果我说 "ten" 结果抛出“10”,我如何设法让单个数字由实际数字而不是交响乐 "one".

表示

您可以使用 NumberFormatter 将 numberStyle 设置为 .spellOut 并使用其 number(from: String) 将您的字符串转换为数字。如果您需要该数字中的字符串,只需从中初始化一个新字符串即可。如果您只想检测英文单词(不区分区域设置),请确保将格式化程序区域设置设置为“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

正在测试另一个 language/locale

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