Detecting if an NSString contains…?

后端 未结 7 2083
长情又很酷
长情又很酷 2021-01-30 03:37

How can I detect if a string contains a certain word? For example, I have a string below which reads:

@\"Here is my string.\"

I\'d like to know

相关标签:
7条回答
  • 2021-01-30 04:03

    I hope this helps you,.. add this line at .m file or create a separate class and integrate this code.

    @implementation NSString (Contains)
    
    - (BOOL) containsString: (NSString*) substring
    {
    NSRange range = [self rangeOfString : substring];
    BOOL found = ( range.location != NSNotFound );
    return found;
    }    
    @end
    
    0 讨论(0)
  • 2021-01-30 04:04

    I recommend using NSLinguisticTagger. We can use it to search Here is my string. His isn't a mississippi isthmus. It is?

    NSLinguisticTagger *linguisticTagger = [[NSLinguisticTagger alloc] initWithTagSchemes:@[
                                            NSLinguisticTagSchemeTokenType,
                                            ]
                                                                                  options:
                                            NSLinguisticTaggerOmitPunctuation |
                                            NSLinguisticTaggerOmitWhitespace |
                                            NSLinguisticTaggerOmitOther ];
    [linguisticTagger setString:@"Here is my string. His isn't a mississippi isthmus. It is?"];
    [linguisticTagger enumerateTagsInRange:NSMakeRange(0,
                                                       [[linguisticTagger string] length])
                                    scheme:NSLinguisticTagSchemeTokenType
                                   options:
     NSLinguisticTaggerOmitPunctuation |
     NSLinguisticTaggerOmitWhitespace |
     NSLinguisticTaggerOmitOther |
     NSLinguisticTaggerJoinNames
                                usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
                                    NSLog(@"tag: %@, tokenRange: %@, sentenceRange: %@, token: %@",
                                          tag,
                                          NSStringFromRange(tokenRange),
                                          NSStringFromRange(sentenceRange),
                                          [[linguisticTagger string] substringWithRange:tokenRange]);
                                }];
    

    This outputs:

    tag: Word, tokenRange: {0, 4}, sentenceRange: {0, 19}, token: Here
    tag: Word, tokenRange: {5, 2}, sentenceRange: {0, 19}, token: is
    tag: Word, tokenRange: {8, 2}, sentenceRange: {0, 19}, token: my
    tag: Word, tokenRange: {11, 6}, sentenceRange: {0, 19}, token: string
    tag: Word, tokenRange: {19, 3}, sentenceRange: {19, 33}, token: His
    tag: Word, tokenRange: {23, 2}, sentenceRange: {19, 33}, token: is
    tag: Word, tokenRange: {25, 3}, sentenceRange: {19, 33}, token: n't
    tag: Word, tokenRange: {29, 1}, sentenceRange: {19, 33}, token: a
    tag: Word, tokenRange: {31, 11}, sentenceRange: {19, 33}, token: mississippi
    tag: Word, tokenRange: {43, 7}, sentenceRange: {19, 33}, token: isthmus
    tag: Word, tokenRange: {52, 2}, sentenceRange: {52, 6}, token: It
    tag: Word, tokenRange: {55, 2}, sentenceRange: {52, 6}, token: is
    

    It ignores His mississippi and isthmus and even identifies is inside of isn't.

    0 讨论(0)
  • 2021-01-30 04:05

    With iOS 8 and Swift, we can use localizedCaseInsensitiveContainsString method

     let string: NSString = "Café"
     let substring: NSString = "É"
    
     string.localizedCaseInsensitiveContainsString(substring) // true
    
    0 讨论(0)
  • 2021-01-30 04:09

    Here's how I would do it:

    NSString *someString = @"Here is my string";
    NSRange isRange = [someString rangeOfString:@"is " options:NSCaseInsensitiveSearch];
    if(isRange.location == 0) {
       //found it...
    } else {
       NSRange isSpacedRange = [someString rangeOfString:@" is " options:NSCaseInsensitiveSearch];
       if(isSpacedRange.location != NSNotFound) {
          //found it...
       }
    }
    

    You can easily add this as a category onto NSString:

    @interface NSString (JRStringAdditions) 
    
    - (BOOL)containsString:(NSString *)string;
    - (BOOL)containsString:(NSString *)string
                   options:(NSStringCompareOptions)options;
    
    @end
    
    @implementation NSString (JRStringAdditions) 
    
    - (BOOL)containsString:(NSString *)string
                   options:(NSStringCompareOptions)options {
       NSRange rng = [self rangeOfString:string options:options];
       return rng.location != NSNotFound;
    }
    
    - (BOOL)containsString:(NSString *)string {
       return [self containsString:string options:0];
    }
    
    @end
    
    0 讨论(0)
  • 2021-01-30 04:10

    In iOS8 you can now use:

    BOOL containsString = [@"Here is my string." containsString:@"is"];
    

    There's an interesting post on how to "retrofit" it to iOS7 here: http://petersteinberger.com/blog/2014/retrofitting-containsstring-on-ios-7/

    0 讨论(0)
  • 2021-01-30 04:13

    Use the following code to scan the word in sentence.

    NSString *sentence = @"The quick brown fox";
    NSString *word = @"quack";
    if ([sentence rangeOfString:word].location != NSNotFound) {
        NSLog(@"Yes it does contain that word");
    }
    
    0 讨论(0)
提交回复
热议问题