如何将整数转换为objective-c中的相应单词?

iOS上的Objective-C中有一种方法可以将整数作为文本进行拼写吗?

例如,如果我有

NSInteger someNumber = 11242043; 

我想知道一些函数,以便返回一个类似“11244万四千三百”的string。

Apple为许多数据types内置了许多方便的格式化function。 调用一个“格式化程序”,他们可以将对象转换为/从string表示。

对于你的情况,你将使用NSNumberFormatter,但是如果你有一个整数,你需要先把它转换成一个NSNumber。 看下面的例子。

 NSInteger anInt = 11242043; NSString *wordNumber; //convert to words NSNumber *numberValue = [NSNumber numberWithInt:anInt]; //needs to be NSNumber! NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterSpellOutStyle]; wordNumber = [numberFormatter stringFromNumber:numberValue]; NSLog(@"Answer: %@", wordNumber); // Answer: eleven million two hundred forty-two thousand forty-three 

如果您想了解更多关于格式化程序的信息,请访问: https : //developer.apple.com/library/content/documentation/General/Conceptual/Devpedia-CocoaApp/Formatter.html

Swift 3/4的扩展function

 import Foundation public extension Int { public var asWord: String { let numberValue = NSNumber(value: self) var formatter = NumberFormatter() formatter.numberStyle = .spellOut return formatter.string(from: numberValue)! } } var value = 2 println("\(value.asWord)") 

输出:两个

从文档:

NSNumberFormatterSpellOutStyle

指定拼写格式; 例如,“23”变成“二十三”。

在iOS 2.0及更高版本中可用。

在NSNumberFormatter.h中声明。

由于你的问题不是很具体,我不会发布完整的代码源。

我们可以像这样快速地做到这一点。

  let formatter = NSNumberFormatter() formatter.numberStyle = NSNumberFormatterStyle. SpellOutStyle println("\(identifier) \(formatter.stringFromNumber(1234.5678))") 

您可以使用下面的函数将整数转换为使用swift原生数字样式的单词。

 func toWords<N>(number: N) -> String? { let formatter = NumberFormatter() formatter.numberStyle = .spellOut switch number { case is Int, is UInt, is Float, is Double: return formatter.string(from: number as! NSNumber) case is String: if let number = Double(number as! String) { return formatter.string(from: NSNumber(floatLiteral: number)) } default: break } return nil } print(toWords(number: 12312)) print(toWords(number: "12312")) 

对于我自己的参考,这是@ moca的答案,但准备使用:

 - (NSString *) spellInt:(int)number { NSNumber *numberAsNumber = [NSNumber numberWithInt:number]; NSNumberFormatter *formatter = [NSNumberFormatter new]; [formatter setNumberStyle:NSNumberFormatterSpellOutStyle]; return [formatter stringFromNumber:numberAsNumber]; } 

注意:这是使用ARC。