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

How to check how much two strings are different

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

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

现在的问题是: 我怎样才能确保每次 只有一个 字符被更改? NSString 是否有一种方法可以比较两个字符串的不同程度?

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

没有内置的 NSString 方法可用于执行您想要的操作。您需要编写自己的方法。 Objective-C 确实让您 "extend" 类 使用新方法来涵盖此类情况。

我会这样做:

@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)

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

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