【问题标题】:What is the syntax for checking if two strings are the same in Objective C [duplicate]在Objective C中检查两个字符串是否相同的语法是什么[重复]
【发布时间】:2012-08-01 12:27:36
【问题描述】:

检查字符串是否相同的语法是什么?

在 Java 中是: string1.equals(string2);

但是在目标 C 中它是什么?

【问题讨论】:

  • 我假设您实际上并不想检查它们是否相同或是否是相同的字符串,但实际上想检查它们是否具有相同的内容。
  • 是的,只要它们具有相同的内容,在我的代码中我就知道它们是不同的值。

标签: objective-c


【解决方案1】:

使用特定的字符串相等消息

[string1 isEqualToString: string2]

【讨论】:

    【解决方案2】:
    NSString *String1, *String2;
    if([String1 compare: String2] == NSOrderedSame)
        //They are the same
    

    NSOrderedSame被定义为零,所以可以写

    if(![String1 compare: String2])
        //Equals
    

    【讨论】:

    • isEqualToString:compare:有区别吗?
    • 它更短。此外,它非常适合strcmp 的长期用户。
    • 如果self 或参数是nil-compare: 会给你一个不好的结果。因此,如果您的用例包含潜在的nil 对象,则应事先检查nil 并进行特殊处理。
    【解决方案3】:

    您需要使用isEqualToString 以获得最准确的结果。我已经包含了几个关于如何使用它的示例。

    NSString *aString = foo;
    NSString *bString = bar;
    if ([aString isEqualToString:bString]) {
        NSLog("Match");
    }
    else NSLog("No Match");
    //No match.
    
    NSString *aString = foo;
    NSString *bString = bar;
    if ([aString isEqualToString:@"foo"]) {
        NSLog("Double Foo!");
    }
    else NSLog("No Match");
    //Double Foo!
    
    NSString *aString = foo;
    NSString *bString = bar;
    if (![aString isEqualToString:bString]) {
        NSLog("No Match");
    }
    else NSLog("Match");
    //No Match
    

    【讨论】:

    • @seva-alekseyev 很好,感谢您的编辑。
    【解决方案4】:

    你需要使用isEqualToString.

     if ( [stringOne isEqualToString: stringTwo] ) { }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2020-10-05
      • 2021-01-12
      • 1970-01-01
      • 2016-03-21
      相关资源
      最近更新 更多