IOS/Objective-C:查找字符串中单词的索引

Posted

技术标签:

【中文标题】IOS/Objective-C:查找字符串中单词的索引【英文标题】:IOS/Objective-C: Find Index of word in String 【发布时间】:2017-04-24 14:38:13 【问题描述】:

我正在尝试返回字符串中单词的索引,但无法找到一种方法来处理找不到它的情况。以下不起作用,因为 nil 不起作用。尝试了 int、NSInteger、NSUInteger 等的每一种组合,但找不到与 nil 兼容的组合。有没有办法做到这一点?谢谢

-(NSUInteger) findIndexOfWord: (NSString*) word inString: (NSString*) string 
    NSArray *substrings = [string componentsSeparatedByString:@" "];

    if([substrings containsObject:word]) 
        int index = [substrings indexOfObject: word];
        return index;
     else 
        NSLog(@"not found");
        return nil;
    

【问题讨论】:

看文档developer.apple.com/reference/foundation/nsarray/…:“如果数组中没有一个对象等于anObject,则返回NSNotFound。” 【参考方案1】:

使用NSNotFound,如果在substrings 中找不到word,则indexOfObject: 将返回。

- (NSUInteger)findIndexOfWord:(NSString *)word inString:(NSString *)string 
    NSArray *substrings = [string componentsSeparatedByString:@" "];

    if ([substrings containsObject:word]) 
        int index = [substrings indexOfObject:word];
        return index; // Will be NSNotFound if "word" not found
     else 
        NSLog(@"not found");
        return NSNotFound;
    

现在当您调用findIndexOfWord:inString: 时,检查NSNotFound 的结果以确定它是否成功。

您的代码实际上可以更简单地编写为:

- (NSUInteger)findIndexOfWord:(NSString *)word inString:(NSString *)string 
    NSArray *substrings = [string componentsSeparatedByString:@" "];

    return [substrings indexOfObject: word];

【讨论】:

以上是关于IOS/Objective-C:查找字符串中单词的索引的主要内容,如果未能解决你的问题,请参考以下文章

Javascript在字符串中查找单词的索引(不是单词的一部分)

查找字符串中重复单词的索引[重复]

正则表达式在字符串中任何特定单词之前和之后查找特定单词

在字符串中查找子字符串,但仅当整个单词?

在字符串中查找与字典中的值匹配的单词,然后在新列中返回键

用后缀树查找两个单词中最长的子串