0

重複した NSDecimalSeparator を削除するために、文字列内で NSScanner または for ループを使用しようとしています。どうやってするか?

注: NSDecimalSeparator は「単なるカンマ」ではありません。iOS の現在のローカリゼーションに応じて変更されます。したがって、重複する「カンマ」の検索を適用する実装は機能しません。

4

1 に答える 1

0

NSDecimalSeparator非推奨です。使用することをお勧めしNSNumberFormatterます:

//getting default formatter
NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior: [NSNumberFormatter defaultFormatterBehavior]];

//creating two strings, one with single and one with double separator
NSString *separator = [numberFormatter decimalSeparator];
NSString *doubleSeparator = [NSString stringWithFormat:@"%@%@", separator, separator];

NSLog(@"decimal separator: %@", separator);

//creating example string
NSString *str = [NSString stringWithFormat:@"single: %@ double: %@", separator, doubleSeparator];

NSLog(@"example string: %@", str);

//replacing double separator with single separator
NSString *modified = [str stringByReplacingOccurrencesOfString: doubleSeparator withString:separator];

NSLog(@"modified string: %@", modified);

編集: 「23,45,67」文字列に関するコメントについては、次のとおりです。

NSString *str2 = @"23,45,67";

NSMutableArray *temp = [NSMutableArray arrayWithArray: [str2 componentsSeparatedByString:separator]];

NSString *last = [temp lastObject];

[temp removeLastObject];

NSString *newStr = [NSString stringWithFormat:@"%@%@%@", [temp componentsJoinedByString:@""], separator, last];

NSLog(@"result: %@", newStr);

編集 2: 最初のセパレーターのみを保持するコードは似ています:

NSMutableArray *temp2 = [NSMutableArray arrayWithArray: [str2 componentsSeparatedByString:separator]];

NSString *first = [temp2 objectAtIndex:0];

[temp2 removeObject:first];

NSString *newStr2 = [NSString stringWithFormat:@"%@%@%@", first, separator, [temp2 componentsJoinedByString:@""]];

NSLog(@"result2: %@", newStr2);
于 2012-07-22T15:12:18.947 に答える