Swift Numbers将文本命名为Int

时间:2017-10-20 19:46:23

标签: ios swift sfspeechrecognizer

我刚刚实现了SFSpeechRecognizer,因为我想要它来指示一些数字,但我遇到的问题是如果我说“one”结果.bestTranscription.formattedString是“one”,但如果我说“十” “结果抛出”10“,我怎样才能设法用实际数字表示单个数字,而不是交响乐”one“。

1 个答案:

答案 0 :(得分:1)

您可以将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

测试其他语言/区域设置

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