2

「1.23,45」のような文字列があります (ドイツ/フランス スタイルまたはその他のスタイル)。フォーマットを通常の文字列または nsnumber に削除するにはどうすればよいですか? 私は数値から文字列への変換しか知りません.:(ありがとう。

4

4 に答える 4

2
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
于 2012-09-26T10:40:53.353 に答える
1

aを使用して a を aNSStringに変換できますが、文字列に使用しているロケール (この場合はドイツ語) を指定する必要があります。NSNumberNSNumberFormatter

// 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];
于 2012-10-30T16:22:37.703 に答える
0
  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);
于 2012-09-26T10:32:21.167 に答える
0

次の 2 つのことを行う必要があるようです。

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);
于 2012-09-26T10:52:26.980 に答える