在Objective-C中,检查NSString子字符串的代码是:

NSString *string = @"hello Swift";
NSRange textRange =[string rangeOfString:@"Swift"];
if(textRange.location != NSNotFound)
{
    NSLog(@"exists");
}

但是如何在Swift中做到这一点呢?


当前回答

Swift 5,不区分大小写:

如果string.localizedLowercase.contains(“迅速”.localizedLowercase) {

其他回答

你可以用Swift做同样的事情:

斯威夫特&斯威夫特

在Swift 4中,字符串是字符值的集合,在Swift 2和3中不像这样,所以你可以使用更简洁的代码1:

let string = "hello Swift"
if string.contains("Swift") {
    print("exists")
}

Swift 3.0 +

var string = "hello Swift"

if string.range(of:"Swift") != nil { 
    print("exists")
}

// alternative: not case sensitive
if string.lowercased().range(of:"swift") != nil {
    print("exists")
}

年长的迅速

var string = "hello Swift"

if string.rangeOfString("Swift") != nil{ 
    println("exists")
}

// alternative: not case sensitive
if string.lowercaseString.rangeOfString("swift") != nil {
    println("exists")
}

我希望这是一个有用的解决方案,因为包括我在内的一些人在调用containsString().1时遇到了一些奇怪的问题

PS.别忘了导入粉底

脚注

只要记住,在字符串上使用集合函数有一些边缘情况,可能会给你意想不到的结果,例如在处理表情符号或其他字母群(如重音字母)时。

你可以按照你刚才提到的去做:

import Foundation
...
string.contains("Swift");

从文档中可以看出:

Swift的String类型无缝地桥接到Foundation的NSString 类。如果您正在使用Cocoa中的Foundation框架或 Cocoa Touch,整个NSString API可以调用任何 您所创建的字符串值,以及所描述的字符串特性 在本章中。你也可以在任何API中使用String值 需要一个NSString实例。

你需要导入Foundation来桥接NSString方法,并使它们对Swift的String类可用。

另一个。支持大小写和变音符。

斯威夫特3.0

struct MyString {
  static func contains(_ text: String, substring: String,
                       ignoreCase: Bool = true,
                       ignoreDiacritic: Bool = true) -> Bool {

    var options = NSString.CompareOptions()

    if ignoreCase { _ = options.insert(NSString.CompareOptions.caseInsensitive) }
    if ignoreDiacritic { _ = options.insert(NSString.CompareOptions.diacriticInsensitive) }

    return text.range(of: substring, options: options) != nil
  }
}

使用

MyString.contains("Niels Bohr", substring: "Bohr") // true

iOS 9 +

iOS 9开始提供大小写和变音符不敏感功能。

if #available(iOS 9.0, *) {
  "Für Elise".localizedStandardContains("fur") // true
}

>在swift 3.0

let str = "Hello Swift"
if str.lowercased().contains("Swift".lowercased()) {
    print("String Contains Another String")
} else {
    print("Not Exists")
}

输出

String Contains Another String

检查它是否包含“Hello”

let s = "Hello World"

if s.rangeOfString("Hello") != nil {
    print("Yes it contains 'Hello'")
}