2014-09-21 24 views
10

我想在這個問題同樣的問題:Swift:String包含字符串(不使用NSString)?

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

但現在幾個月後不知是否可以在不使用的NSString做些什麼呢? 我很好,簡單的包含方法會很好。 我搜索了網頁和文檔,但我什麼也沒找到!

+1

的可能的複製[如何檢查是否字符串包含在斯威夫特另一個字符串?](http://stackoverflow.com/questions/24034043/how-do-i-check-if-a-string -contains-another-string-in-swift) – 2016-08-22 09:16:05

回答

27

同樣的方式,只是斯威夫特語法:

let string = "This is a test. This is only a test" 

if string.rangeOfString("only") != nil { 
    println("yes") 
} 

對於雨燕3.0

if str.range(of: "abc") != nil{ 
    print("Got the string") 
} 
+1

「is」是什麼意思?我可以得到最後一個「is」嗎? – Zam 2015-03-24 07:18:21

+0

@Zam在這種情況下,它會返回'is'的第一個重合/匹配,並且如果您打印範圍'',您將得到類似於'2 .. <4' {^_^} -->'if if range = string.rangeOfString(「is」 ){print(range)}' – eMdOS 2015-12-10 16:22:00

+0

這個語法仍然在Swift 2中使用嗎? – 2015-12-14 22:49:47

0

我就串寫了一個擴展SWIFT 3.0,這樣我可以簡單地叫absoluteString.contains(string: "/kredit/")

extension String { 
    public func contains(string: String)-> Bool { 
     return self.rangeOfString(string) != nil 
    } 

}

2

String實際上通過StringProtocol提供了「包含」功能。
沒有擴展任何需要:

let str = "asdf" 
print(str.contains("sd") ? "yep" : "nope") 

enter image description here

https://developer.apple.com/reference/swift/string https://developer.apple.com/documentation/swift/stringprotocol


如果要檢查你的串中的某個模式匹配,我可以推薦NSHipster文章關於NSRegularExpressions:http://nshipster.com/nsregularexpression/

+0

這就是檢查字符串是否包含某個字符! – 2017-11-26 21:50:03

+1

@EmilMarashliev這是真的。但是另外你可以檢查任何符合'StringProtocol'的東西 - 所以它也適用於'String'。 – 2017-11-27 07:07:03

+0

哈,你完全正確它來自'StringProtocol' https://developer.apple.com/documentation/swift/stringprotocol/2923423-它比'range(of:)'更方便更優雅的方式' – 2017-11-27 09:13:54

0

只是爲了演示使用選項。

var string = "This is a test. This is only a test. Not an Exam" 

if string.range(of:"ex") != nil { 
    print("yes") 
} 
if string.range(of:"ex", options: String.CompareOptions.caseInsensitive) != nil { 
    print("yes") 
}