在NSString的某个标志后获取单词

时间:2014-04-15 18:25:28

标签: objective-c

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

示例:

NSString *me=@" i am going to make !somthing great" ;

我需要删除something一词以及!符号,该文字将出现在该文字中。

是否有一些像stringByReplacingOccurrencesOfString:这样的方法不仅可以找到符号,还可以识别附加到它的单词?

感谢。

4 个答案:

答案 0 :(得分:4)

你想要一个regular expression。在这种情况下,您需要具有模式@"!\w*"的模式。 (NSScanner也可以使用,但我认为正则表达式在这种情况下更简洁。)

答案 1 :(得分:1)

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

NSString *me=@" 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:@""];
    }
}

答案 2 :(得分: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:@""];
}];

答案 3 :(得分:0)

尝试以下语法,这可以帮助您

NSString * replacementString = [NSString stringByReplacingOccurancesOfString:@"!something" withString:@" "];