1

I'm stuck help. You have to use strings, but I haven't really found a logical way to make this work well.

var letters = ["Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten"]

var str:String

  print("Enter a number from 0 to 10: ")
  str = readLine()!
  print (letters[0])
...

  print("Enter a number from 0 to 10: ")
  str = readLine()!
  print (letters[10])

2 Answers2

1

Maybe this api is similar but not exactly what you need. https://developer.apple.com/documentation/foundation/numberformatter/style/spellout

let formatter: NumberFormatter = {
    let nf = NumberFormatter()
    nf.numberStyle = .spellOut
    nf.locale = Locale(identifier: "en_US")
    return nf
}()

extension Numeric {
    var spelledOut: String? {
        return formatter.string(for: self)
    }
}
let one = 1.spelledOut
print(one) //->one
print(25.spelledOut) //->twenty-five
print(1.5.spelledOut) //->one point five

https://developer.apple.com/forums/thread/121448

Quang Hà
  • 4,613
  • 3
  • 24
  • 40
1

You can do it like this with String extension

extension String {
    func wordToInteger() -> Int {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .spellOut
        return  numberFormatter.number(from: self.lowercased()) as? Int ?? 0
    }
}

Use like this

let letters = ["Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten"]
print(letters[10].wordToInteger()) // In your Case

print("Three".wordToInteger())

Output

enter image description here

Nikunj Kumbhani
  • 3,758
  • 2
  • 26
  • 51