关于iphone:将NSString转换为NSNumber

Converting an NSString to an NSNumber

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to convert an NSString into an NSNumber

如何将一个NSString(例如@"5")转换成一个NSNumber(5)。我查看了在堆栈溢出时是否有任何问题可以回答这个问题,但似乎很多人都在要求将数字转换为字符串,而不是反过来。


这基本上可以工作,至少可以让您开始:

1
2
3
4
5
6
7
8
9
10
11
12
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);

}

需要考虑的一些事情:

  • 您需要将区域设置正确地设置为某个固定区域设置(如果这些字符串都来自服务器或某种常量语言),或者让它浮动到用户的区域设置(如果用户是输入字符串的用户)。
  • 正如其他人指出的,这个解析器可能不够复杂,不能满足您的需求。例如,最后一个字符串"三十三"实际上返回了错误的结果。其他人工作正常。正如@jonathangrynspan所建议的那样,如果你在这里告诉我们更多关于你目标的信息,也许有人可以提出更好的建议。

希望有帮助。


由于以下几个原因,没有内置功能:

1)模糊性。如果说江户十一〔0〕年,我可能会说"二零一三"、"二零一三"、"二零一三"、"二零一三"、"二零一三"、"二零一三"、"二零一三"等,甚至没有考虑到辩证的差异。

2)不易本地化。不同语言之间大声说出数字的规则差异很大(因此一组规则不能真正用于每个区域设置),苹果只提供了可以在世界各地使用的API。这个星球上的大多数人不说英语。

3)假设用户拼写正确。"第四个"不是数字"。四十"是"。

如果你告诉我们你为什么要这样做(即目标是什么),也许我们可以建议一个更好的方法?


1
2
3
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:@"42"];

希望这有帮助。