14

私は 1 つの NSString オブジェクトを持っています。例えば:- ($45,0000)

この文字列に () が含まれているかどうかを調べたい

これどうやってするの?

4

6 に答える 6

37

またはの少なくとも 1 つが含まれているかどうかを確認しようとしています()? 使用できます-rangeOfCharacterFromSet:

NSCharacterSet *cset = [NSCharacterSet characterSetWithCharactersInString:@"()"];
NSRange range = [mystr rangeOfCharacterFromSet:cset];
if (range.location == NSNotFound) {
    // no ( or ) in the string
} else {
    // ( or ) are present
}
于 2013-01-10T19:53:30.357 に答える
15

以下のメソッドは、指定された文字列に指定された文字が含まれている場合、Yes を返します。

-(BOOL)doesString:(NSString *)string containCharacter:(char)character
{
    return [string rangeOfString:[NSString stringWithFormat:@"%c",character]].location != NSNotFound;
}

次のように使用できます。

 NSString *s = @"abcdefg";

    if ([self doesString:s containCharacter:'a'])
        NSLog(@"'a' found");
    else
        NSLog(@"No 'a' found");


    if ([self doesString:s containCharacter:'h'])
        NSLog(@"'h' found");
    else
        NSLog(@"No 'h' found");

出力:

2013-01-11 11:15:03.830 CharFinder[17539:c07] 'a' が見つかりました

2013-01-11 11:15:03.831 CharFinder[17539:c07] 「h」が見つかりません

于 2013-01-10T22:17:31.147 に答える
2

コードで使用していた質問に対する一般的な回答を得ました。このコードには次の規則が含まれます。 1. 特殊文字は使用しない 2. 少なくとも 1 つの大文字と 1 つの小文字の英字 3. 少なくとも 1 つの数字

 BOOL lowerCaseLetter,upperCaseLetter,digit,specialCharacter;
    int asciiValue;
    if([txtPassword.text length] >= 5)
    {
        for (int i = 0; i < [txtPassword.text length]; i++)
        {
            unichar c = [txtPassword.text characterAtIndex:i];
            if(!lowerCaseLetter)
            {
                lowerCaseLetter = [[NSCharacterSet lowercaseLetterCharacterSet] characterIsMember:c];
            }
            if(!upperCaseLetter)
            {
                upperCaseLetter = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:c];
            }
            if(!digit)
            {
                digit = [[NSCharacterSet decimalDigitCharacterSet] characterIsMember:c];
            }

            asciiValue = [txtPassword.text characterAtIndex:i];
            NSLog(@"ascii value---%d",asciiValue);
            if((asciiValue >=33&&asciiValue < 47)||(asciiValue>=58 && asciiValue<=64)||(asciiValue>=91 && asciiValue<=96)||(asciiValue>=91 && asciiValue<=96))
            {
                specialCharacter=1;
            }
            else
            {
                specialCharacter=0;
            }

        }

        if(specialCharacter==0 && digit && lowerCaseLetter && upperCaseLetter)
        {
            //do what u want
            NSLog(@"Valid Password %d",specialCharacter);
        }
        else
        {
            NSLog(@"Invalid Password %d",specialCharacter);
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                            message:@"Please Ensure that you have at least one lower case letter, one upper case letter, one digit and No Any special character"
                                                           delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
        }
于 2014-01-22T07:27:02.257 に答える
2

なぜ常に NSCharactorSet を使用するのですか?? これはシンプルで強力なソリューションです

NSString *textStr = @"This is String Containing / Character";

if ([textStr containsString:@"/"])
{
    NSLog(@"Found!!");
}
else
{
   NSLog(@"Not Found!!");
于 2016-05-13T08:00:35.137 に答える
0

使用できます

NSString rangeOfString: (NSString *) string

ここを参照してください: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html%23//apple_ref/occ/instm/NSString/rangeOfString :

NSRange が NSNotFound に等しいプロパティ 'location' で戻ってきた場合、文字列には渡された文字列 (または文字) が含まれていません。

于 2013-01-10T19:52:03.637 に答える