Number Formatters 格式…

来源:互联网 发布:windows中,剪贴板是? 编辑:程序博客网 时间:2024/05/25 05:36

NSNumberFormatter 有两个方法 stringFromNumber:numberFromString:

stringFromNumber: 把数值展现为字符 ,numberFromString:把字符生成一个数值object.

你也可以使用 localizedStringFromNumber:numberStyle:. 方法把数值创建一个局部的不生成 formatter实例的 字符.

当有时需要处理一些复杂的需求,继承自 NSFormatter 的方法 (例如 getObjectValue:forString:errorDescription,)getObjectValue:forString:range:error:方法可以指定解析字符串中的某个范围内,并返回那个范围.(如果失败,会表明哪里出现错误) 而且同时会返回 NSError包含详细的失败原因的实例


Use Formatter Styles to Present Numbers With the User’sPreferences


设置一个数值的格式  有很多方法 一般情况下.你可以使用NSNumberFormatter 的setNumberStyle:设置预先设定好的格式. 

NSNumberFormatter  可以很容易的设置一系列用户在系统设置里面的系统内置的格式.包括

NSNumberFormatterDecimalStyle

NSNumberFormatterCurrencyStyle,

NSNumberFormatterPercentStyle

NSNumberFormatterScientificStyle

NSNumberFormatterSpellOutStyle  


NSNumberFormatterNoStyle

这些属性都是用户系统设置里面设置的.


你可以使用 setNumberStyle: 方法来设置格式下面的例子是设置一个日期的格式. 

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];

[numberFormattersetNumberStyle:NSNumberFormatterDecimalStyle];

NSString *formattedNumberString = [numberFormatterstringFromNumber:[NSNumber numberWithFloat:122344.4563]];

NSLog(@"formattedNumberString: %@", formattedNumberString);

// Output for locale en_US: "formattedNumberString:formattedNumberString: 122,344.453"


Use Format Strings to Specify Custom Formats


自定义数值格式 使用setPositiveFormat:setNegativeFormat: 两个方法请看如下例子

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];

[numberFormatter setPositiveFormat:@"###0.##"];

NSString *formattedNumberString = [numberFormatterstringFromNumber:[NSNumber numberWithFloat:122344.4563]];

NSLog(@"formattedNumberString: %@", formattedNumberString);

// Output for locale en_US: "formattedNumberString:formattedNumberString: 122,344.45"


Percentages 百分数 百分比显示

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];

[numberFormatter setPositiveFormat:@"0.00%;0.00%;-0.00%"];

NSNumber *four = [NSNumber numberWithFloat:4.0];

NSLog(@"%@", [numberFormatter stringFromNumber:four]);

// output: "400.00%"

如果你用上面显示百分比的方法会很出现一些误解,因为系统会自动乘以100. 可以使用 NSNumberFormatterPercentStyle  设置百分比,并根据每个国家不同的显示


NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];

[numberFormattersetNumberStyle:NSNumberFormatterPercentStyle];

NSNumber *four = [NSNumber numberWithFloat:4.0];


NSLocale *usLocale = [[NSLocale alloc]initWithLocaleIdentifier:@"en_US"];

[numberFormatter setLocale:usLocale];

NSLog(@"en_US: %@", [numberFormatterstringFromNumber:four]);

// output: "en_US: 400%"


NSLocale *faLocale = [[NSLocale alloc]initWithLocaleIdentifier:@"fa_IR"];

[numberFormatter setLocale:faLocale];

NSLog(@"fa_IR: %@", [numberFormatterstringFromNumber:four]);

// output: "fa_IR: ‪‪٪۴۰۰‬‬"Nomenclature 

NSNumberFormatter provides several methods (such as setMaximumFractionDigits:) that allow you tomanage the number of fractiondigitsallowed as input by an instance. “Fraction digits” arethe numbersafter the decimal separator (in English locales, thedecimal separatoris typically referred to as the “decimalpoint”).

其他一些范例

http://www.iphonesdkarticles.com/2008/11/localizing-iphone-apps-part-1.html


NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];  

    [numberFormattersetFormatterBehavior:NSNumberFormatterBehavior10_4]; 

    [numberFormattersetFormat:@"0.00%;0.00%;-0.00%"];  

    NSNumber *four = [NSNumbernumberWithFloat:4.0];  

    NSLog(@"%@",[numberFormatter stringFromNumber:four]);  

    // output: "400.00%"


NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];  

    [numberFormattersetFormatterBehavior:NSNumberFormatterBehavior10_4]; 

    [numberFormattersetNumberStyle:NSNumberFormatterPercentStyle]; 

    NSNumber *four = [NSNumbernumberWithFloat:4.0];  

      

    NSLocale *usLocale =[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 

    [numberFormattersetLocale:usLocale];  

    NSLog(@"en_US: %@",[numberFormatter stringFromNumber:four]);  

    // output: "en_US: 400%" 

      

    NSLocale *faLocale =[[NSLocale alloc] initWithLocaleIdentifier:@"fa_IR"]; 

    [numberFormattersetLocale:faLocale];  

    NSLog(@"fa_IR: %@",[numberFormatter stringFromNumber:four]);  

    // output: "fa_IR:‪‪٪۴۰۰‬‬"

http://www.cnblogs.com/xymwbc/archive/2011/09/21/2184196.html





如何限制文本框只能输入数字 



在某些情况下,我们可能需要文本框只能输入数字值,或者其他特定值。这里提供了实现的方法。 建立NSNumberFormatter的子类,增加这个方法,将 formatter 链接至文本框。 - ( BOOL ) isPar


在某些情况下,我们可能需要文本框只能输入数字值,或者其他特定值。这里提供了实现的方法。 

- (BOOL) isPartialStringValid: (NSString **)partialStringPtr

       proposedSelectedRange: (NSRangePointer)proposedSelRangePtr

             originalString: (NSString *)origString

       originalSelectedRange: (NSRange)origSelRange

           errorDescription: (NSString **) error

{

    NSCharacterSet*nonDigits;

    NSRange newStuff;

    NSString*newStuffString;

          

    nonDigits =[[NSCharacterSet decimalDigitCharacterSet] invertedSet];

    newStuff =NSMakeRange(origSelRange.location,

                      proposedSelRangePtr->location

                       - origSelRange.location);

    newStuffString =[*partialStringPtr substringWithRange: newStuff];

          

    if ([newStuffStringrangeOfCharacterFromSet: nonDigits

                                                                              options:NSLiteralSearch].location != NSNotFound) {

       *error = @"不是数字";

       return (NO);

    } else {

       *error = nil;

       return (YES);

    }         

}

0 0
原创粉丝点击