2017-10-20 56 views
1

我剛剛實現了SFSpeechRecognizer,因爲我想讓它指定一些數字,但是我遇到的問題是如果我說「one」result.bestTranscription.formattedString是「one」,但如果我說「十」結果拋出「10」,我怎麼能設法得到一個單一的數字來表示實際的數字而不是交響樂的「一個」。Swift Numbers Name Text to Int

回答

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 
+1

感謝您的快速反應,它工作得很漂亮! –