首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比较两个NSStrings

比较两个NSStrings
EN

Stack Overflow用户
提问于 2011-08-07 05:45:03
回答 3查看 43.2K关注 0票数 25

在我的应用程序中,有一种机制要求在某一点上两个NSString是相同的;出于某种原因,当我比较这两个时,即使它们是相同的,它仍然无法识别这一点。代码如下所示:

代码语言:javascript
复制
NSString * aString = [self someMethodThatGetsAString];

NSString * bString;

BOOL areStringsTheSame = NO;

while (areStringsTheSame != YES) {

       bString = [self someMethodThatTakesNSStringsFromAnArrey];
       if (bString == aString) {
             areStringsTheSame = YES;
       { }

我甚至插入了一个NSLog(),并确保它们在某一点上是相同的(据我所知,这就是==所代表的……),但它仍然没有进入if来改变BOOL的值。

有没有其他方法来做这个比较呢?我是不是遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-07 05:46:31

您可以使用isEqualToString:方法

代码语言:javascript
复制
if ([bString isEqualToString:aString])

==比较字符串的引用(地址),而不是字符串的值。

票数 82
EN

Stack Overflow用户

发布于 2014-05-20 21:39:19

这种方法对我很有效:

代码语言:javascript
复制
if ([firstString compare:secondString] == NSOrderedSame) {
    //Do something when they are the same
} else {
    //Do something when they are different
}
票数 5
EN

Stack Overflow用户

发布于 2012-09-07 21:33:17

最近,令我震惊的是,NSLog上两个彼此相似的NSStrings可能是不同的。这是因为有时NSString可以包含宽度为零的空格字符。请注意这一点,并考虑:

代码语言:javascript
复制
#define ZERO_WIDTH_SPACE_STRING @"\u200B"

为了克服这个问题,你应该在比较之前清除字符串中的零宽度空格字符:

代码语言:javascript
复制
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]]];
        }
    }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6969115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档