我需要得到某个符号后出现的单词,并将其删除。在NSString的某个符号后得到单词
例如:
NSString *[email protected]" i am going to make !somthing great" ;
我需要删除的字something
,用!
标志,在以往任何时候都将出现在该文本一起。
有没有像stringByReplacingOccurrencesOfString:
这样的方法不仅可以找到符号,而是识别附在其上的单词?
谢谢。
我需要得到某个符号后出现的单词,并将其删除。在NSString的某个符号后得到单词
例如:
NSString *[email protected]" i am going to make !somthing great" ;
我需要删除的字something
,用!
标志,在以往任何时候都将出现在该文本一起。
有没有像stringByReplacingOccurrencesOfString:
这样的方法不仅可以找到符号,而是识别附在其上的单词?
谢谢。
如果你有理由不使用正则表达式(或者如果您不熟悉它们),可以使用以下
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:@""];
}
}
你想要一个regular expression。在这种情况下,您需要一个模式为@"!\w*"
的模式。 (安NSScanner也将工作,但我觉得正则表达式是在这种情况下,更简洁。)
尝试以下语法这可以帮助你
的NSString * replacedString = [NSString的stringByReplacingOccurancesOfString:“东西” @ withString :@“”];
我认为,海报希望找到'!'s,然后无论什么单词被附加到他们重新移动;它可能或可能或可能不具体是'!something'。 – Tommy
这里是代码:
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:@""];
}];
如果你想采取这种方法,我认为NSScanner会更好。 – Chuck