在我的应用程序中,有一种机制要求在某一点上两个NSString
是相同的;出于某种原因,当我比较这两个时,即使它们是相同的,它仍然无法识别这一点。代码如下所示:
NSString * aString = [self someMethodThatGetsAString];
NSString * bString;
BOOL areStringsTheSame = NO;
while (areStringsTheSame != YES) {
bString = [self someMethodThatTakesNSStringsFromAnArrey];
if (bString == aString) {
areStringsTheSame = YES;
{ }
我甚至插入了一个NSLog()
,并确保它们在某一点上是相同的(据我所知,这就是==
所代表的……),但它仍然没有进入if
来改变BOOL
的值。
有没有其他方法来做这个比较呢?我是不是遗漏了什么?
发布于 2011-08-07 05:46:31
发布于 2014-05-20 21:39:19
这种方法对我很有效:
if ([firstString compare:secondString] == NSOrderedSame) {
//Do something when they are the same
} else {
//Do something when they are different
}
发布于 2012-09-07 21:33:17
最近,令我震惊的是,NSLog上两个彼此相似的NSStrings可能是不同的。这是因为有时NSString可以包含宽度为零的空格字符。请注意这一点,并考虑:
#define ZERO_WIDTH_SPACE_STRING @"\u200B"
为了克服这个问题,你应该在比较之前清除字符串中的零宽度空格字符:
NSMutableString *eMailToAdd = [NSMutableString string];
NSMutableCharacterSet *charSet = [[NSCharacterSet whitespaceCharacterSet] mutableCopy];
//[charSet formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]];
NSString *rawStr = [[tokenField textField] text];
for (int i = 0; i < [rawStr length]; i++)
{
if (![charSet characterIsMember:[rawStr characterAtIndex:i]])
{
[eMailToAdd appendFormat:@"%@",[NSString stringWithFormat:@"%c", [rawStr characterAtIndex:i]]];
}
}
https://stackoverflow.com/questions/6969115
复制相似问题