将NSString转换为NSNumber
将NSString转换为NSNumber
这个问题已经在这里有答案了:
可能的重复:
如何将NSString
(例如@\"Five\")转换为NSNumber
(5)。我已经在Stack Overflow上找过是否有任何问题回答了这个问题,但似乎许多人一直在要求将数字转换为字符串,而不是另一种方式。
admin 更改状态以发布 2023年5月23日
这方面没有内置的功能,原因有几点:
1) 它模糊不清。要说 2013
(年),我可能会说“ two thousand thirteen”,“two thousand and thirteen”,“twenty thirteen”,“two kay thirteen” 等等。这甚至没有考虑方言差异。
2) 它不容易本地化。朗读数字的规则在语言间变化很大(因此不能真正用于每个地区),而苹果仅提供可用于全球的API。这个星球上大多数人不说英语。
3) 它假设用户能正确拼写。 "Fourty" 不是数字,"Forty" 才是。
如果您告诉我们您为什么要这样做(即目标是什么),也许我们可以提出更好的方法?
这个大致可以起到作用,至少可以让你开始:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; formatter.numberStyle = NSNumberFormatterSpellOutStyle; NSArray *testStrings = @[@"Five",@"twenty-four",@"Nineteen",@"One hundred forty-two"]; for (NSString *test in testStrings) { NSNumber *result = [formatter numberFromString:[test lowercaseString]]; NSLog (@"String %@ -> %@ as number",test,result); }
一些需要考虑的事情:
- 你需要将语言环境设置正确,可以是某些固定的语言环境(如果这些字符串都来自服务端或某个固定语言的常量),或者让它浮动到用户的语言环境(如果用户是输入这些字符串的人)
- 正如其他人指出的,这个解析器可能不够复杂,无法满足你的需求。例如,最后一个字符串"thirty three"实际上返回了错误的结果。其他的工作得很正确。如@JonathanGrynspan所建议的,如果你在这里告诉我们更多关于你的目标,有人可能会建议更好的方法。
希望能有所帮助。