我在regex
中使用iOS
还很陌生,我正在对其进行实验。我正在努力寻找解决问题的方法。如果此问题之前已经得到回答,或者我只是缺少真正明显的东西和/或使用错误的工具来实现我的目标,我会为此道歉。
我有一个字符串,用户将在textfield
中输入。然后,如何更改它以更正字符串中包含的单词的拼写?
NSString *userstring = @"Jon Travalta";
NSError *error = NULL;
NSString *modstring = @"";
NSRegularExpression *regex = [[NSRegularExpression alloc]init];
regex = [NSRegularExpression regularExpressionWithPattern:@"(Jon|Johnathan|Jonathen|John)\\s(Travalta|Travalte|Travelta|Travolta)" options:NSRegularExpressionCaseInsensitive error:&error];
modstring = [regex stringByReplacingMatchesInString:userstring options:0 range:NSMakeRange(0,[userstring length]) withTemplate:@"John Travolta"];
可以正常工作并更正字符串,但我们可以说该字符串是其他字符串。我想保持该正则表达式为活动状态,以检查字符串是否包含任何要纠正它的元素。
因此,在进行上述检查之前,将字符串设置为“ Anthony Hopkin”。然后,我还将使用另一个regexwithpattern
检查字符串,以使用正确的名称拼写来更正该字符串。
regex = [NSRegularExpression regularExpressionWithPattern:@"(Anthony|Antony|Tony|)\\s(Hopkin|Hapkin|Hopkins)" options:NSRegularExpressionCaseInsensitive error:&error];
modstring = [regex stringByReplacingMatchesInString:userstring options:0 range:NSMakeRange(0,[userstring length]) withTemplate:@"Anthony Hopkins"];
即使这是第一个字符串,也将用Anthony Hopkins替换该字符串。
如果我对NSRegularExpression
和stringByReplacingMatchesInString
进行了不同的分配,则它什么也不做,并且字符串保留了开始的样子。