如何比较两个字符串,而它们的某些部分是相同的?
假设我有一个字符串ABCAAAA
。
由于某种原因,一次只能更改字符串ABCAAAA
的一个字符。例如,我可以将此字符串更改为DBCAAAA
。
现在的问题是:
如何确保每次更改仅一个字符?是否有NSString
方法来比较两个字符串的差异?
目的:我将每个字符串放入自己的UITextField
以确定此字符串是否为可编辑,如果其他人已更改。我需要确保一次只编辑一个。因此,如果已对其中一个进行了修改,我会将UITextField
' enable
设置为NO以禁用编辑。
答案 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
部分做什么。
如果必须按特定顺序编辑文本字符串,请自行按索引计算顺序。