1

+、スペース、および - を除くすべての特殊文字を削除したい。それはどのように可能ですか?

私の弦は

Äî;a[bRa]Co-Founder MobÄ: +91 9711700008

出力:

abRaCo-Founder Mob +91 9711700008

以下の回答によると、コードを更新しましたが、まだ成功していません。

NSMutableCharacterSet *special = [NSMutableCharacterSet characterSetWithCharactersInString:@"+ -"];
[special formUnionWithCharacterSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]];


NSString *temp=@"gaurav 1!@#!#@! kant !@#!@#!@#12kestwal ";

NSString *yourString = [temp stringByTrimmingCharactersInSet:special];

NSLog(@"%@",yourString);

何か足りない?

4

3 に答える 3

2

メガ関数よりもはるかに短い。:D上記:

id s = @"$bla++$bleb+$blub-$b";
NSMutableCharacterSet *ch = [[NSCharacterSet alphanumericCharacterSet] mutableCopy];
[ch invert];
[ch removeCharactersInString:@"+-"]; //make sure its not removed
s = [[s componentsSeparatedByCharactersInSet:ch] componentsJoinedByString:@""];
NSLog(@"%@ - %@",ch, s);

この例では、$が削除されます

于 2012-11-10T12:25:05.803 に答える
0

試してみませんか?

NSString *yourString = @"Äî;a[bRa]Co-Founder MobÄ: +91 9711700008"

// thanks for Daij-Djan to point my mistake here
NSMutableCharacterSet *special = [[NSCharacterSet alphanumericCharacterSet] mutableCopy];
[special invert];
[special removeCharactersInString:@"+ -"]; 

// for this one I answer before Daij-Djan, please see edit version
//  note: I didn't offensive to anyone, please do not misunderstanding, thanks.
NSString *yourString =[[yourString componentsSeparatedByCharactersInSet:special]
 componentsJoinedByString:@""];

したがって、分離してから結合します。このリンクのおかげで、NSString から英数字以外の文字を削除します

于 2012-11-10T11:02:59.837 に答える
0

これは、あなたがやろうとしていることを達成する方法の例です:

#import <Foundation/Foundation.h>

BOOL isWanted(unichar character)
{
    if(character>='a' && character<='z')
        return YES;
    if(character>='A' && character<='Z')
        return YES;
    if(character>='0' && character<='9')
        return YES;
    if(character=='-' || character=='+')
        return YES;
    return NO;
}

int main(int argc, char** argv)
{
    @autoreleasepool
    {
        NSString* string= @"Äî;a[bRa]Co-Founder MobÄ: +91 9711700008";
        NSMutableString* filteredString=[NSMutableString new];
        for(NSUInteger i=0; i<[string length];i++)
        {
            unichar character=[string characterAtIndex: i];
            if(isWanted(character))
                [filteredString appendString: [NSString stringWithFormat: @"%c",character]];
        }
        NSLog(@"%@",filteredString);
    }
    return 0;
}

文字列にその文字を含める場合、isWanted 関数は YES を返します。読みやすくするために、論理 OR はあまり使用しませんでしたが、if だけを一意の if に置き換えることができます。
ドキュメントを見るのに時間がかかりすぎる場合は、自分で解決策を考え出すことができます。多くの人は同意しません。もちろん、1 行で解決する方がよいのですが、文書化された適切な方法が見つからない場合、時間を無駄にする必要はありません。

于 2012-11-10T12:07:19.703 に答える