2017-10-20 26 views
1

Je viens d'implémenter SFSpeechRecognizer, parce que je veux qu'il dicte certains nombres, mais le problème que je rencontre est que si je dis "un" le result.bestTranscription.formattedString est "un", mais si je dis «dix», le résultat renvoie «10», comment puis-je obtenir que les nombres à un seul chiffre soient représentés par le nombre réel et non par le «un» symphonique?Swift Numbers Nom du texte en Int

Répondre

1

Vous pouvez utiliser le paramètre NumberFormatter numberStyle à .spellOut et d'utiliser number(from: String) pour convertir votre chaîne en nombre. Si vous avez besoin d'une chaîne à partir de ce numéro, initialisez simplement une nouvelle chaîne. Assurez-vous que si vous voulez seulement détecter les mots anglais (locale non sensible) pour définir les paramètres régionaux de formatter à « 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 

Test autre langue/locale

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

Merci pour la réponse rapide , ça a fonctionné à merveille! –