HiveBrain v1.2.0
Get Started
← Back to all entries
patternswiftModerate

Int extension for translating integer to plain English

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
translatingenglishextensionforintintegerplain

Problem

This code was inspired by this question: Number to Words

```
import Foundation

extension Int {
func plainEnglish (negativeSign: String = "negative") -> String {
func singleNumberName (number: Int) -> String {
switch (number) {
case 1: return "one"
case 2: return "two"
case 3: return "three"
case 4: return "four"
case 5: return "five"
case 6: return "six"
case 7: return "seven"
case 8: return "eight"
case 9: return "nine"
default:return ""
}
}

func tensNumberName (number: Int) -> String {
switch (number) {
case 2: return "twenty"
case 3: return "thirty"
case 4: return "fourty"
case 5: return "fifty"
case 6: return "sixty"
case 7: return "seventy"
case 8: return "eighty"
case 9: return "ninety"
default:return ""
}
}

func teensNumberName (number: Int) -> String {
switch (number) {
case 0: return "ten"
case 1: return "eleven"
case 2: return "twelve"
case 3: return "thirteen"
case 5: return "fifteen"
default:return singleNumberName(number) + "teen"
}
}

var number = self
var digits: [Int] = []

while number != 0 {
digits.append(abs(number%10))
number /= 10
}

var plainEnglish: [String] = []

var isTeen = false
let totalPlaces = digits.count
var currentPlace = 0

for (index, digit) in enumerate(digits.reverse()) {
currentPlace = totalPlaces - index
if currentPlace % 3 == 0 && digit > 0 {
plainEnglish.append(singleNumberName(digit) + " hundred")
} else if (currentPlace + 1) % 3 == 0 {
if digi

Solution

So Apple already has an implementation for this, using NSNumberFormatter. A bit easier to implement than what you have now ;).

var numberFormatter:NSNumberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
var string = numberFormatter.stringFromNumber(100)

Code Snippets

var numberFormatter:NSNumberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
var string = numberFormatter.stringFromNumber(100)

Context

StackExchange Code Review Q#58878, answer score: 18

Revisions (0)

No revisions yet.