2014-04-15 22 views
0

我需要得到某个符号后出现的单词,并将其删除。在NSString的某个符号后得到单词

例如:

NSString *[email protected]" i am going to make !somthing great" ; 

我需要删除的字something,用!标志,在以往任何时候都将出现在该文本一起。

有没有像stringByReplacingOccurrencesOfString:这样的方法不仅可以找到符号,而是识别附在其上的单词?

谢谢。

回答

1

如果你有理由不使用正则表达式(或者如果您不熟悉它们),可以使用以下

NSString *[email protected]" i am going to make !somthing great" ; 
NSRange r1 = [me rangeOfString:@"!"]; 
if (r1.location != NSNotFound) { 
    NSRange r2 = [me rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet] 
            options:0 
             range:NSMakeRange(r1.location, me.length - r1.location)]; 
    if (r2.location != NSNotFound) { 
     me = [me stringByReplacingCharactersInRange:NSMakeRange(r1.location, r2.location - r1.location) withString:@""]; 
    } 
} 
+1

如果你想采取这种方法,我认为NSScanner会更好。 – Chuck

4

你想要一个regular expression。在这种情况下,您需要一个模式为@"!\w*"的模式。 (安NSScanner也将工作,但我觉得正则表达式是在这种情况下,更简洁。)

0

尝试以下语法这可以帮助你

的NSString * replacedString = [NSString的stringByReplacingOccurancesOfString:“东西” @ withString :@“”];

+1

我认为,海报希望找到'!'s,然后无论什么单词被附加到他们重新移动;它可能或可能或可能不具体是'!something'。 – Tommy

1

这里是代码:

NSMutableString *mutableMe = [me mutableCopy]; 
    NSError *error; 
    NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:@"!\\w*" options:0 error:&error]; 
    [regex replaceMatchesInString:mutableMe options:0 range:NSMakeRange(0, [mutableMe length]) withTemplate:@""]; 

如果你想找到它首先比使用

[regex enumerateMatchesInString:mutableMe options:0 range:NSMakeRange(0, [mutableMe length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { 
    NSRange rangeOfString = [result rangeAtIndex:0]; 
    [mutableMe replaceCharactersInRange:rangeOfString withString:@""]; 
}]; 
相关问题