【问题标题】:Is it possible to spell out numbers in words with a separator?是否可以用分隔符拼出单词中的数字?
【发布时间】:2012-09-03 14:52:10
【问题描述】:

我知道 NSNumberFormatter 的 NSNumberFormatterSpellOutStyle,但它返回格式不正确的数字:932 返回“九百三十二”而不是“九百三十二”。

different questionDave DeLong 中说他得到了“932”相同的代码,这正是我想要的——“and”这个词(或者本地化时可能是什么)曾经分开大数。这可能吗?

【问题讨论】:

  • 您在寻找什么样的输出?只为 100 以下的部分添加了“和”?您是否尝试过各种更大的数字,看看是否存在其他情况,默认行为无法满足您的需求?
  • 我相信添加and 至少在语法上不正确或英语很差。
  • 虽然我不同意 op 使用“格式不良”来描述格式化程序的输出,但我不认为将“和”放入是不正确的(美式)英语——我当然听说过它使用了两种方式(我不知道“正式规则”是什么,如果有的话,但口语使用肯定会包括两种方式)。
  • 其实在美式英语中,“and”应该只用来分隔美元和美分,但在英式英语中,“and”是这样使用的:en.wikipedia.org/wiki/…我不知道是什么方言OP的目标是....
  • 话虽如此,我尝试将数字格式化程序的区域设置更改为 en_GB 并且它仍然没有添加 and (我相信它应该因为它是正确的英式英语)。

标签: objective-c


【解决方案1】:

如果您只想添加“和”,我认为您必须手动执行(在您引用的问题得到回答后,行为发生了变化,或者是答案中的拼写错误)。 我认为您可以这样做,但我不知道这是否适用于您希望的所有情况:

    int num = 932;
    int leftNum = floor(num/100) * 100;
    int rightNum = num % 100;
    NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
    [f setNumberStyle:NSNumberFormatterSpellOutStyle];
    NSString *combo;
    if (num > 100) {
        NSString *l = [f stringFromNumber:[NSNumber numberWithInt:leftNum]];
        NSString *r = [f stringFromNumber:[NSNumber numberWithInt:rightNum]];
        combo = [NSString stringWithFormat:@"%@ and %@",l,r];
    }else{
        combo = [f stringFromNumber:[NSNumber numberWithInt:num]];
    }
    NSLog(@"%@", combo);

【讨论】:

  • 谢谢!这肯定解决了 932 所代表的确切问题,但我相信“和”将插入到其他各种地方——例如,“一百万三十三万八千零一”。
  • 你必须考虑所有你想要一个“和”的地方,并以我的帖子为指导编写你自己的规则。
猜你喜欢
  • 2021-04-23
  • 2010-12-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
  • 2012-05-23
  • 2012-02-28
相关资源
最近更新 更多