Objective-C中的NSString indexOf

Gui*_*ido 55 cocoa objective-c

是否有类似于indexOfNSString对象中的函数?

Air*_*Ltd 89

用途-[NSString rangeOfString:]:

- (NSRange)rangeOfString:(NSString *)aString;
Run Code Online (Sandbox Code Playgroud)

查找并返回接收器中给定字符串第一次出现的范围.

  • 而且`NSRange.location`是实际索引. (10认同)
  • `if (NSRange.location != NSNotFound)` 那么你找到了一个匹配。 (2认同)

ora*_*eis 28

如果你只想知道String a包含String b的时候用我的方式来做这件事.

#define contains(str1, str2) ([str1 rangeOfString: str2 ].location != NSNotFound)

//using 
NSString a = @"PUC MINAS - BRAZIL";

NSString b = @"BRAZIL";

if( contains(a,b) ){
    //TO DO HERE
}
Run Code Online (Sandbox Code Playgroud)

这不太可读,但可以提高性能


fir*_*oke 18

我写了一个类来扩展原始的NSString对象.也许你们可以参考它.(你也可以在我的博客中看到这篇文章.)

ExtendNSString.h:

#import <Foundation/Foundation.h>

@interface NSString (util)

- (int) indexOf:(NSString *)text;

@end
Run Code Online (Sandbox Code Playgroud)

ExtendNSStriing.m:

#import "ExtendNSString.h"

@implementation NSString (util)

- (int) indexOf:(NSString *)text {
    NSRange range = [self rangeOfString:text];
    if ( range.length > 0 ) {
        return range.location;
    } else {
        return -1;
    }
}

@end
Run Code Online (Sandbox Code Playgroud)

  • 更好地使用NSRange应该如下`code` - (int)indexOf:(NSString*)text {NSRange range = [self rangeOfString:text]; if(range.location!= NSNotFound){return range.location; } else {return -1; `code` (3认同)