我知道我可以使用 characterAtIndex: 遍历两个 NSString 对象的每个字符并比较它们,但是如果我经常使用这个函数,这种方法会非常昂贵。
有没有为此内置的东西,或者更有效的方法?
我知道我可以使用 characterAtIndex: 遍历两个 NSString 对象的每个字符并比较它们,但是如果我经常使用这个函数,这种方法会非常昂贵。
有没有为此内置的东西,或者更有效的方法?
我能想到的最快方法是从中获取一个 C 字符串,然后遍历这些字符串。
只是一个简单的例子(根据你的喜好修复它):
const char* myCString = [myNSStringInstance UTF8String];
const char* string2 = [nsstring2 UTF8String];
// Assume same length. You can fix this
for(i = 0; i < strlen(myCString); i++) {
if(myCString[i] != string2[i]) {
// Do something here...
}
}
这有点骇人听闻,但是您可以为每个获取 c 字符串,然后使用指针索引。与您提到的想法相同的基本算法,但理论上与您合理期望的解决方案一样有效(只需查看两个内存地址并比较它们的内容。
伪代码:
char *stringA = [stringA cStringUsingEncoding:NSUTF8StringEncoding];
char *stringB = [stringB cStringUsingEncoding:NSUTF8StringEncoding];
int mismatchIndex = -1;
for(int i = 0; i<shorterStringLength; i++) {
if (stringA[i] != stringB[i]) {
mismatchIndex = i;
break;
}
}