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

Sta*_*tan 9 iphone objective-c nsnumberformatter ipad ios

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

    NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
    [numberFormatter setPositiveFormat:@"+0"];
    NSString strNumber = [numberFormatter stringFromNumber:[NSNumber numberWithInt:intSomeNumber]];
Run Code Online (Sandbox Code Playgroud)

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

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setPositiveFormat:@"+#"];
NSString strNumber = [numberFormatter stringFromNumber:[NSNumber numberWithInt:intSomeNumber]];
Run Code Online (Sandbox Code Playgroud)

Kre*_*iri 18

从您链接的页面:

有关更多详细信息,请参阅IEEE printf规范.

现在来自IEEE printf规范:

+签名转换的结果应始终以符号('+'或' - ')开头.只有在未指定此标志的情况下转换负值时,转换才应以符号开头.

例:

NSLog(@"%+f", 3.455677);
Run Code Online (Sandbox Code Playgroud)

结果:

+3.455677
Run Code Online (Sandbox Code Playgroud)


omz*_*omz 8

[numberFormatter setPositivePrefix:@"+"];
Run Code Online (Sandbox Code Playgroud)


die*_*ikh 7

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