0

すべての文字を削除したいのですが、必要なのは 0 ~ 9 の数字です

これを解決する例を教えてください。

4

3 に答える 3

3

独自の NSCharacterSet を作成し、invertedSet を使用して、含まれていないすべての文字を削除できます。次に例を示します。

NSString *stringWithLettersAndNumbers = @"345345345fff";

NSCharacterSet *myCharset = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSString *newString = [stringWithLettersAndNumbers stringByTrimmingCharactersInSet:[myCharset invertedSet]];

NSLog(@"%@",newString);
于 2013-09-01T03:18:17.167 に答える
2

正規表現は、この種のものに最適です。

NSString *orgStr = @"letters34243more32132letters";

NSString *result = [orgStr stringByReplacingOccurrencesOfString: @"\\D"
                                                     withString: @""
                                                        options: NSRegularExpressionSearch
                                                          range: NSMakeRange(0, orgStr.length)];

これが行うことは、数字以外の文字 ( として定義\D) を見つけて、それを空の文字列に置き換える、つまり削除することです。

文字列内の位置に関係なく、そのような文字に対してそれを行います。質問を読んだところ、これが必要なものです。

NSString リテラルは「実際の」ものをエスケープするために追加のバックスラッシュが必要なため、パターン文字列内の二重のバックスラッシュ (「\」) が必要です。

于 2013-09-01T15:16:07.663 に答える
0

文字列をループして、すべての数字をピックアップします。

NSMutableString *strResult = [NSMutableString string];
for (int position=0; position<text.length; position++) {
  unichar c = [text characterAtIndex:position];
  NSCharacterSet *numericSet = [NSCharacterSet decimalDigitCharacterSet];
  if ([numericSet characterIsMember:c]) {
    [strResult appendFormat:@"%C", c]; 
  }
}
于 2013-09-01T03:26:47.807 に答える