如何将int格式化为NSString,并在iOS中显示正数的+号

时间:2012-11-29 11:40:35

标签: iphone objective-c ios ipad nsnumberformatter

AFAIK使用[NSString stringWithFormat:@“%d”]是不可能的,因为没有明确显示+显示的说明符,至少我没有在Apple Developer String Format Specifiers找到它 所以看起来我必须在我的情况下使用NSNumberFormatter。我找到了如何设置加号表示但无法弄清楚如何实现我的目标。我试过了

    NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
    [numberFormatter setPositiveFormat:@"+0"];
    NSString strNumber = [numberFormatter stringFromNumber:[NSNumber numberWithInt:intSomeNumber]];

但是我担心它会将GT 9的数字减少到1位数而且我不希望这样。我只想用+显示任何正int,用 - 显示任何负数。这是正确的方式:

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setPositiveFormat:@"+#"];
NSString strNumber = [numberFormatter stringFromNumber:[NSNumber numberWithInt:intSomeNumber]];

4 个答案:

答案 0 :(得分:18)

从您关联的页面开始:

  

有关详细信息,请参阅IEEE printf specification

现在来自IEEE printf规范:

  

+       签名转换的结果应始终以符号('+'或' - ')开头。转换应仅在a时以符号开头   如果未指定此标志,则转换负值。

示例:

NSLog(@"%+f", 3.455677);

结果:

+3.455677

答案 1 :(得分:8)

[numberFormatter setPositivePrefix:@"+"];

答案 2 :(得分:7)

使用[NSString stringWithFormat:@"%+d", intSomeNumber]

答案 3 :(得分:2)

只需使用:

NSString *strNumber = [NSString stringWithFormat:@"%+d",intSomeNumber];