【发布时间】:2012-09-26 10:28:19
【问题描述】:
我有一个类似“1.23,45”的字符串,(德国/法国风格或其他风格)。 如何将格式删除为普通字符串或 nsnumber? 我只知道从数字转换为字符串。:( 谢谢。
【问题讨论】:
我有一个类似“1.23,45”的字符串,(德国/法国风格或其他风格)。 如何将格式删除为普通字符串或 nsnumber? 我只知道从数字转换为字符串。:( 谢谢。
【问题讨论】:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setCurrencySymbol:@""];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:locale];
NSString *formattedOutput = [formatter stringFromNumber:[NSNumber numberWithFloat:[aPrice floatValue]]];
[locale release];
[formatter release];
NSLog(@"%@", formattedOutput];
进一步将formattedString转换为数字
NSNumber myNumber = [formattedOutput intValue]; //replace intValue by floatValue to get decimal output
【讨论】:
您可以使用NSNumberFormatter 将NSString 转换为NSNumber,但您必须告诉它您为字符串使用的语言环境(在这种情况下为德语):
// Create a number formatter that can convert from/to German currency:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"];
[formatter setLenient:YES];
// Use the number formatter to create a NSNumber:
NSNumber *number = [formatter numberFromString:@"1.23,45"];
// Return the number formatter to the current user's locale:
formatter.locale = [NSLocale currentLocale];
// Finally, create a string from the NSNumber formatted in the user's locale:
NSString *formattedString = [formatter stringFromNumber:number];
【讨论】:
NSNumber * myNumber = [NSNumber numberWithInt:[@"1.23,45" intValue]];
或
NSNumber * myNumber = [NSNumber numberWithFloat:[@"1.23,45" floatValue]];
注意:最好去掉字符串中的逗号(,)符号
您可以使用以下方法
+ (NSNumber *)numberWithChar:(char)value;
+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
+ (NSNumber *)numberWithLongLong:(long long)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
+ (NSNumber *)numberWithFloat:(float)value;
+ (NSNumber *)numberWithDouble:(double)value;
+ (NSNumber *)numberWithBool:(BOOL)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);
【讨论】:
听起来你需要做两件事:
1) 根据逗号分隔将字符串分解为子字符串数组
NSString *startString = @"1.23,45";
NSArray *subStringArray= [colorStr componentsSeparatedByString:@","];
2) 将每个子字符串转换为数字
NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *subString = [subStringArray objectAtIndex:0];
NSNumber *thisNumber = [formatter numberFromString:subString];
NSLog (@"thisNumber: %@", thisNumber);
【讨论】: