NSString Range如何工作?

时间:2014-03-06 03:24:35

标签: objective-c nsstring nsrange

我只是在玩Xcode,现在使用Xcode在另一个字符串中找到一些字符串。这里的问题是它没有显示我的期望。 (显示“找不到匹配!”) 有什么提示吗? 谢谢,

我的代码是:

int main(int argc, const char * argv[])
{

    @autoreleasepool {



        NSString *listOfNames = @"huhuWARDdsfadfadsfsadfafsfsadfafr";
        NSString *capListOfNames = [listOfNames capitalizedString];

        NSString *name = @"WaRd";
        NSString *capName = [name capitalizedString];



        NSRange match = [capListOfNames rangeOfString:capName];
        if (match.location == NSNotFound)
        {
            NSLog(@"No match faound!");
        }else{
            NSLog(@"Found!");
            NSLog(@"location : %d",(int)match.location);
            NSLog(@"length : %d",(int)match.length);


        }


    }
    return 0;
}

2 个答案:

答案 0 :(得分:2)

capitalizedString以大写的第一个字母和其余的小写字母返回您的字符串。

使用capName = [name uppercaseString];

再试一次

目前,您正在查找不包含"Ward"的字符串中的"Ward"(尽管它包含"WARD")。

编辑:capitalizedString在字符串大写的每个单词中生成第一个字母,其余为小写。


另外,你可以这样做:

NSRange match = [capListOfNames rangeOfString:capName 
                                      options:NSCaseInsensitiveSearch];

其中,执行不区分大小写的搜索......

答案 1 :(得分:1)

capitalizedString只会使第一个字母大写,而是使用uppercaseString来实现您的期望。