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
我刚刚实现了 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