NSString中提取单词 enumerateSubstringsInRange NSCharacterSet CFStringTokenizerRef

来源:互联网 发布:muscletech淘宝真假 编辑:程序博客网 时间:2024/06/06 01:03

方法1:

NSString *popo = @"Lorem __ ! @ () "" ipsum "" dolar ?~  * # $  % ^ & < >{}\\ |;:sit  amet.";    [popo enumerateSubstringsInRange:NSMakeRange(0, popo.length) options:NSStringEnumerationByWords usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) {                NSLog(@"substring     :%@",substring);        NSLog(@"substringRange:%lu,length:%lu",(unsigned long)substringRange.location,substringRange.length);        NSLog(@"enclosingRange:%lu,length:%lu \n\n",(unsigned long)enclosingRange.location,enclosingRange.length);                    }];

打印日志:

2015-11-02 17:22:07.244 AFNetWorkingDemo[8620:300513] substring     :Lorem2015-11-02 17:22:07.245 AFNetWorkingDemo[8620:300513] substringRange:0,length:52015-11-02 17:22:07.245 AFNetWorkingDemo[8620:300513] enclosingRange:0,length:6 2015-11-02 17:22:07.245 AFNetWorkingDemo[8620:300513] substring     :__2015-11-02 17:22:07.245 AFNetWorkingDemo[8620:300513] substringRange:6,length:22015-11-02 17:22:07.245 AFNetWorkingDemo[8620:300513] enclosingRange:6,length:11 2015-11-02 17:22:07.245 AFNetWorkingDemo[8620:300513] substring     :ipsum2015-11-02 17:22:07.245 AFNetWorkingDemo[8620:300513] substringRange:17,length:52015-11-02 17:22:07.245 AFNetWorkingDemo[8620:300513] enclosingRange:17,length:7 2015-11-02 17:22:07.246 AFNetWorkingDemo[8620:300513] substring     :dolar2015-11-02 17:22:07.246 AFNetWorkingDemo[8620:300513] substringRange:24,length:52015-11-02 17:22:07.246 AFNetWorkingDemo[8620:300513] enclosingRange:24,length:33 2015-11-02 17:22:07.246 AFNetWorkingDemo[8620:300513] substring     :sit2015-11-02 17:22:07.246 AFNetWorkingDemo[8620:300513] substringRange:57,length:32015-11-02 17:22:07.273 AFNetWorkingDemo[8620:300513] enclosingRange:57,length:5 2015-11-02 17:22:07.273 AFNetWorkingDemo[8620:300513] substring     :amet2015-11-02 17:22:07.273 AFNetWorkingDemo[8620:300513] substringRange:62,length:42015-11-02 17:22:07.273 AFNetWorkingDemo[8620:300513] enclosingRange:62,length:5 



方法2:

CFStringRef string1 = (__bridge CFStringRef)([NSString stringWithFormat:@"Lorem    ipsum dolar   sit  amet."]); // Get string from somewhere    CFLocaleRef locale = CFLocaleCopyCurrent();    CFStringTokenizerRef tokenizer =    CFStringTokenizerCreate(                            kCFAllocatorDefault                            , string1                            , CFRangeMake(0, CFStringGetLength(string1))                            , kCFStringTokenizerUnitWord                            , locale);    CFStringTokenizerTokenType tokenType = kCFStringTokenizerTokenNone;    unsigned tokensFound = 0;    while(kCFStringTokenizerTokenNone !=          (tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer))) {        CFRange tokenRange = CFStringTokenizerGetCurrentTokenRange(tokenizer);        CFStringRef tokenValue =        CFStringCreateWithSubstring(                                    kCFAllocatorDefault                                    , string1                                    , tokenRange);        // Do something with the token        NSLog(@"tokenValue:%@",tokenValue);        NSLog(@"tokenRange:%ld,%ld",tokenRange.location,tokenRange.length);        CFShow(tokenValue);        CFRelease(tokenValue);        ++tokensFound;    }    // Clean up    CFRelease(tokenizer);    CFRelease(locale);

打印日志:

2015-11-02 17:22:07.276 AFNetWorkingDemo[8620:300513] string:Lorem ipsum dolar sit amet.2015-11-02 17:22:07.276 AFNetWorkingDemo[8620:300513] sss:Loremipsumdolarsitamet.2015-11-02 17:22:07.277 AFNetWorkingDemo[8620:300513] tokenValue:Lorem2015-11-02 17:22:07.277 AFNetWorkingDemo[8620:300513] tokenRange:0,5Lorem2015-11-02 17:22:07.277 AFNetWorkingDemo[8620:300513] tokenValue:ipsum2015-11-02 17:22:07.277 AFNetWorkingDemo[8620:300513] tokenRange:9,5ipsum2015-11-02 17:22:07.277 AFNetWorkingDemo[8620:300513] tokenValue:dolar2015-11-02 17:22:07.277 AFNetWorkingDemo[8620:300513] tokenRange:15,5dolar2015-11-02 17:22:07.277 AFNetWorkingDemo[8620:300513] tokenValue:sit2015-11-02 17:22:07.277 AFNetWorkingDemo[8620:300513] tokenRange:23,3sit2015-11-02 17:22:07.278 AFNetWorkingDemo[8620:300513] tokenValue:amet2015-11-02 17:22:07.278 AFNetWorkingDemo[8620:300513] tokenRange:28,4amet


方法3:

    NSString *string = @"Lorem    ipsum dolar   sit  amet.";    string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];        NSArray *components = [string componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];    NSLog(@"%@",components);    components = [components filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self <> ''"]];    NSLog(@"%@",components);    string = [components componentsJoinedByString:@" "];    NSLog(@"string:%@",string);



打印日志:

2015-11-02 17:22:07.275 AFNetWorkingDemo[8620:300513] (    Lorem,    "",    "",    "",    ipsum,    dolar,    "",    "",    sit,    "",    "amet.")2015-11-02 17:22:07.275 AFNetWorkingDemo[8620:300513] (    Lorem,    ipsum,    dolar,    sit,    "amet.")2015-11-02 17:22:07.276 AFNetWorkingDemo[8620:300513] string:Lorem ipsum dolar sit amet.





0 0