我需要得到某个符号后面的单词,并将其删除。
示例:
NSString *me=@" i am going to make !somthing great" ;
我需要删除something
一词以及!
符号,该文字将出现在该文字中。
是否有一些像stringByReplacingOccurrencesOfString:
这样的方法不仅可以找到符号,还可以识别附加到它的单词?
感谢。
答案 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:@" "];