如何将整数转换为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。