是否有任何現有的函數,查找另一個字符串內的子字符串的索引?像.indexOfSubstring
感謝的方法做到這一點:斯威夫特是否有一個方法,給另一個字符串內的子字符串的索引
let word: String = "Hey there, how are you?"
let indexOf: Int = word.indexOfSubstring("ere, how are")
println("index = " + \(indexOf))
和打印:
index = 6
是否有任何現有的函數,查找另一個字符串內的子字符串的索引?像.indexOfSubstring
感謝的方法做到這一點:斯威夫特是否有一個方法,給另一個字符串內的子字符串的索引
let word: String = "Hey there, how are you?"
let indexOf: Int = word.indexOfSubstring("ere, how are")
println("index = " + \(indexOf))
和打印:
index = 6
可以使用rangeOfString
方法:
import Foundation
let word: String = "Hey there, how are you?"
if let range = word.rangeOfString("ere, how are") {
let index = distance(word.startIndex, range.startIndex)
println("index = \(index)")
}
它返回一個範圍,即搜索到的兩側字符串 - 只需使用startIndex
屬性。
注意,這是從NSString
爲什麼抱怨'String'沒有名爲'rangeOfString'的成員?對我來說 – 2014-11-22 09:52:21
也許它應該是'range'而不是'ranger',除非它是你評論中的一個錯字:) – Antonio 2014-11-22 09:55:15
sry這是輸入錯誤,我將你的代碼複製到了playground.But仍然得到這個錯誤 – 2014-11-22 09:57:06
借來的方法有在斯威夫特方法沒有建立。你將需要自己實現它。這樣做的另一個實施
/// Get the start index of string
///
/// :return start index of .None if not found
public func indexOf(str: String) -> Int? {
return self.indexOfRegex(Regex.escapeStr(str))
}
/// Get the start index of regex pattern
///
/// :return start index of .None if not found
public func indexOfRegex(pattern: String) -> Int? {
if let range = Regex(pattern).rangeOfFirstMatch(self).toRange() {
return range.startIndex
}
return .None
}
這段代碼是從這個庫,它有一堆擴展共同迅速類型如String的 https://github.com/ankurp/Dollar.swift/blob/master/Cent/Cent/String.swift#L62
您可以簽上使用的文檔 http://www.dollarswift.org/#indexof-str-string-int
更多或更少[在Swift字符串中查找字符索引]的副本(http://stackoverflow.com/questions/24029163/finding-index-of-character-in-swift-string)。 - 這個問題是關於尋找*字符*,但答案也適用於查找字符串。 – 2014-11-22 11:08:22