如何检查两个字符串有多少不同

时间:2015-04-03 14:45:43

标签: ios objective-c nsstring

如何比较两个字符串,而它们的某些部分是相同的? 假设我有一个字符串ABCAAAA

由于某种原因,一次只能更改字符串ABCAAAA的一个字符。例如,我可以将此字符串更改为DBCAAAA

现在的问题是: 如何确保每次更改仅一个字符?是否有NSString方法来比较两个字符串的差异?

目的:我将每个字符串放入自己的UITextField以确定此字符串是否为可编辑,如果其他人已更改。我需要确保一次只编辑一个。因此,如果已对其中一个进行了修改,我会将UITextField' enable设置为NO以禁用编辑。

2 个答案:

答案 0 :(得分:0)

没有内置的NSString方法可以执行您想要的操作。你需要编写自己的方法。 Objective-C确实让你'#34;扩展"使用新方法的类来涵盖这样的案例。

我就是这样做的:

@interface NSString(Extend)
-(NSInteger)proximity:(NSString*)otherString;
@end

@implementation NSString(Extend)


-(NSInteger)proximity:(NSString*)otherString
{
    NSUInteger length = [otherString length];
    if(length != [self length]) return -1;

    NSUInteger k;
    NSUInteger differences = 0;
    for(k=0;k<length;++k)
    {
        unichar c1 = [self characterAtIndex:k];
        unichar c2 = [otherString characterAtIndex:k];
        if(c1!=c2)
        {
            ++differences;
        }
    }
    return differences;
    }
@end

然后在我想要检查的地方的代码中,我会说类似

答案 1 :(得分:0)

Michael L给出了一个很好的答案(+1)

我只想注意,如果所有文本字符串都在单独的UITextField中,那么一次只能编辑其中一个。因此,我真的不明白你想用enable = NO部分做什么。

如果必须按特定顺序编辑文本字符串,请自行按索引计算顺序。