Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何检测NSString是否包含特定字符?_Ios_Objective C - Fatal编程技术网

Ios 如何检测NSString是否包含特定字符?

Ios 如何检测NSString是否包含特定字符?,ios,objective-c,Ios,Objective C,我有一个NSString对象,例如:-($450000) 现在我想知道这个字符串是否包含() 我怎样才能做到这一点?您可以使用 NSString rangeOfString: (NSString *) string 请看这里: 如果NSRange返回时属性“location”等于NSNotFound,则该字符串不包含传递的字符串(或字符)。是否尝试查找它是否至少包含一个(或)?您可以使用-rangeOfCharacterFromSet:: NSCharacterSet *cset = [NSC

我有一个NSString对象,例如:-($450000)

现在我想知道这个字符串是否包含()

我怎样才能做到这一点?

您可以使用

NSString rangeOfString: (NSString *) string
请看这里:


如果NSRange返回时属性“location”等于NSNotFound,则该字符串不包含传递的字符串(或字符)。

是否尝试查找它是否至少包含一个
?您可以使用
-rangeOfCharacterFromSet:

NSCharacterSet *cset = [NSCharacterSet characterSetWithCharactersInString:@"()"];
NSRange range = [mystr rangeOfCharacterFromSet:cset];
if (range.location == NSNotFound) {
    // no ( or ) in the string
} else {
    // ( or ) are present
}

如果给定的字符串包含给定的字符,下面的方法将返回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:15:03.831 CharFinder[17539:c07]未找到“h”

我在代码中使用了您的问题的一般答案。此代码包括以下规则:
- (bool) contains: (NSString*) substring {
    NSRange range = [self rangeOfString:substring];
    return range.location != NSNotFound;
}
1.没有特殊字符 2.至少一个大写字母和一个小英文字母 3.至少一个数字

 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];
        }
BOOL小写字母、大写字母、数字、特殊字符;
内华达州;
如果([txtPassword.text length]>=5)
{
对于(int i=0;i<[txtPassword.text length];i++)
{
unichar c=[txtPassword.text characterAtIndex:i];
如果(!小写字母)
{
lowerCaseLetter=[[NSCharacterSet lowercaseLetterCharacterSet]特征成员:c];
}
if(!大写字母)
{
大写字母=[[NSCharacterSet uppercaseLetterCharacterSet]特征成员:c];
}
如果(!位)
{
数字=[[NSCharacterSet decimalDigitCharacterSet]特征成员:c];
}
ascivalue=[txtPassword.text characterAtIndex:i];
NSLog(@“ascii值---%d”,ascivalue);

如果((asciiValue>=33&&asciiValue<47)| |(asciiValue>=58&&asciiValue=91&&asciiValue=91&&asciiValue为什么总是用于NSCharactorSet?这是一个简单而强大的解决方案

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

if ([textStr containsString:@"/"])
{
    NSLog(@"Found!!");
}
else
{
   NSLog(@"Not Found!!");

它将返回NSNotFound,因为在他的例子中,字符串是“($450000)”,而“('and')”字符不相邻。请参阅Kevin的答案。Ramy-是的,这是正确的。请原谅我的记忆失误!相应地编辑了我的答案。我想你误解了我所说的。如果你计算的话,OP字符串是“($450000)”[OPString rangeOfString:@“()”]它将始终返回NSNotFound。您必须使用另一种方法。由于问题简单且有用,所以投票结果为Up。此答案是干净的。只需
返回[string rangeOfString:[NSString stringWithFormat:@“%c”,character]].location!=NSNotFound;
因为问题是要查找它是否包含“(”或“)”