如何检查两个字符串有多少不同
How to check how much two strings are different
如何比较两个字符串的某些部分相同?
假设我有一个字符串 ABCAAAA
。
由于某些原因,一次只能更改字符串 ABCAAAA
的一个字符。例如,我可以将此字符串更改为 DBCAAAA
.
现在的问题是:
我怎样才能确保每次 只有一个 字符被更改? NSString
是否有一种方法可以比较两个字符串的不同程度?
目的:我将每个字符串放入自己的 UITextField
以确定如果其他字符串已更改,此字符串是否 可编辑。我需要确保一次只编辑一个。因此,如果有人被编辑过,我会将 UITextField
的 enable
设置为 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
部分做什么。
如果必须按一定顺序编辑文本字符串,请自行按索引计算顺序。
如何比较两个字符串的某些部分相同?
假设我有一个字符串 ABCAAAA
。
由于某些原因,一次只能更改字符串 ABCAAAA
的一个字符。例如,我可以将此字符串更改为 DBCAAAA
.
现在的问题是:
我怎样才能确保每次 只有一个 字符被更改? NSString
是否有一种方法可以比较两个字符串的不同程度?
目的:我将每个字符串放入自己的 UITextField
以确定如果其他字符串已更改,此字符串是否 可编辑。我需要确保一次只编辑一个。因此,如果有人被编辑过,我会将 UITextField
的 enable
设置为 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
然后在我想检查的地方的代码中我会说类似
我只是想指出,如果您的所有文本字符串都在单独的 UITextFields 中,那么一次只能编辑其中一个。因此我真的不明白你想用 enable = NO
部分做什么。
如果必须按一定顺序编辑文本字符串,请自行按索引计算顺序。