How do I check if a string contains another string in Swift?

后端 未结 27 3653
天命终不由人
天命终不由人 2020-11-22 12:32

In Objective-C the code to check for a substring in an NSString is:

NSString *string = @\"hello Swift\";
NSRange textRange =[strin         


        
27条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-22 13:20

    Extension way

    Swift 4

    extension String {
        func contains(find: String) -> Bool{
            return self.range(of: find) != nil
        }
        func containsIgnoringCase(find: String) -> Bool{
            return self.range(of: find, options: .caseInsensitive) != nil
        }
    }
    
    var value = "Hello world"
    
    print(value.contains("Hello")) // true
    print(value.contains("bo"))    // false
    
    print(value.containsIgnoringCase(find: "hello"))    // true
    print(value.containsIgnoringCase(find: "Hello"))    // true
    print(value.containsIgnoringCase(find: "bo"))       // false
    

    Generally Swift 4 has contains method however it available from iOS 8.0+


    Swift 3.1

    You can write extension contains: and containsIgnoringCase for String

    extension String { 
    
       func contains(_ find: String) -> Bool{
         return self.range(of: find) != nil
       }
    
       func containsIgnoringCase(_ find: String) -> Bool{
         return self.range(of: find, options: .caseInsensitive) != nil 
       }
     }
    

    Older Swift version

    extension String {
    
        func contains(find: String) -> Bool{
           return self.rangeOfString(find) != nil
         }
    
        func containsIgnoringCase(find: String) -> Bool{
           return self.rangeOfString(find, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil
         }
    }
    

    Example:

    var value = "Hello world"
    
    print(value.contains("Hello")) // true
    print(value.contains("bo"))    // false
    
    print(value.containsIgnoringCase("hello"))    // true
    print(value.containsIgnoringCase("Hello"))    // true
    print(value.containsIgnoringCase("bo"))       // false
    

提交回复
热议问题