我目前正在尝试获取子字符串并使用以下方法替换它:
-(void)deleteTag:(UIButton *)sender
{
//grab sender and delete
[sender removeFromSuperview];
NSString *stringToReplace = [[NSArray arrayWithObjects:@"\\b",sender.titleLabel.text,@" ",@"\\b", nil] componentsJoinedByString:@""];
NSString *catchString = postTagField.text;
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:stringToReplace options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:catchString options:0 range:NSMakeRange(0, [catchString length]) withTemplate:@""];
NSLog(@"%@", modifiedString);
//NSString *tempString = [postTagField.text stringByReplacingOccurrencesOfString:stringToReplace withString:@""];
postTagField.text = modifiedString;
[tagArray removeObject:sender];
lastTagArrayCount--;
}
所以会发生什么......用户在UITextField
中输入“This is”,然后我用第4行创建我的正则表达式: stringToReplace ,它放置一个字边界格式化开头和结尾,以确保删除确切的单词以及尾随空格。
然后我尝试用 modifiedString 替换postTagField.text但 modifiedString 总是*断点*结束为“This is”,就好像正则表达式方法{{1永远不会正确地替换匹配(应该只有一个)并返回modifiedString,使其与catchString完全相同。
正确的结果应该是 catchString 减去 stringToReplace 中捕获的字符串。我做错了什么?