用iOS上的多个正则表达式替换文本

问题描述 投票:2回答:2

我在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替换该字符串。

如果我对NSRegularExpressionstringByReplacingMatchesInString进行了不同的分配,则它什么也不做,并且字符串保留了开始的样子。

ios objective-c regex string nsregularexpression
2个回答
2
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.