可能重复:如何将NSString转换为NSNumber
如何将 NSString (例如@ "Five")转换为 NSNumber (5) . 我已经看过是否有任何问题在Stack Overflow上回答这个问题,但似乎很多人一直在要求一个数字来进行字符串转换 - 而不是相反 .
NSString
NSNumber
这大致工作,至少应该让你开始:
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); }
有些事情要考虑:
你'll want to set the locale correctly to either some fixed locale (if these strings are all coming from a server or something in one constant language) or let it float to the user'的区域设置(如果用户是输入字符串的用户)
正如其他人所指出的,这个解析器可能不够复杂,无法满足您的需求 . 例如,最后一个字符串"thirty three"实际上返回错误的结果 . 其他人工作正常 . 正如@JonathanGrynspan建议的那样,如果你在这里告诉我们更多你的目标,有人可以提出更好的建议 .
我希望有所帮助 .
由于以下几个原因,没有内置功能:
1)它很模糊 . 要说 2013 (年份),我可能会说"two thousand thirteen","two thousand and thirteen","twenty thirteen","two kay thirteen"等 . 这甚至没有考虑到辩证的差异 .
2013
2)它不容易本地化 . 大声说话的规则在不同语言之间变化很大(因此一套规则不能真正用于每个语言环境),Apple只提供可在全球使用的API . 这个星球上的大多数人都不会说英语 .
3)它假定用户可以拼写正确 . “四十”不是一个数字 . “四十”是 .
如果你告诉我们你为什么要这样做(即目标是什么),也许我们可以建议一个更好的方法?
NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; [f setNumberStyle:NSNumberFormatterDecimalStyle]; NSNumber * myNumber = [f numberFromString:@"42"];
希望这可以帮助..
3 回答
这大致工作,至少应该让你开始:
有些事情要考虑:
你'll want to set the locale correctly to either some fixed locale (if these strings are all coming from a server or something in one constant language) or let it float to the user'的区域设置(如果用户是输入字符串的用户)
正如其他人所指出的,这个解析器可能不够复杂,无法满足您的需求 . 例如,最后一个字符串"thirty three"实际上返回错误的结果 . 其他人工作正常 . 正如@JonathanGrynspan建议的那样,如果你在这里告诉我们更多你的目标,有人可以提出更好的建议 .
我希望有所帮助 .
由于以下几个原因,没有内置功能:
1)它很模糊 . 要说
2013
(年份),我可能会说"two thousand thirteen","two thousand and thirteen","twenty thirteen","two kay thirteen"等 . 这甚至没有考虑到辩证的差异 .2)它不容易本地化 . 大声说话的规则在不同语言之间变化很大(因此一套规则不能真正用于每个语言环境),Apple只提供可在全球使用的API . 这个星球上的大多数人都不会说英语 .
3)它假定用户可以拼写正确 . “四十”不是一个数字 . “四十”是 .
如果你告诉我们你为什么要这样做(即目标是什么),也许我们可以建议一个更好的方法?
希望这可以帮助..