1

別の文字列内の部分文字列のインデックスを検索する既存の関数はありますか? .indexOfSubstringthankのようなメソッドはこれを行います:

let word: String = "Hey there, how are you?"

let indexOf: Int = word.indexOfSubstring("ere, how are")

println("index = " + \(indexOf))

と印刷:

index = 6
4

2 に答える 2

2

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

于 2014-11-22T09:46:19.197 に答える
1

Swift には組み込みメソッドはありません。自分で実装する必要があります。これの別の実装は

/// 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などの一般的な Swift 型の拡張機能を多数持つこのライブラリからのものです 。

使用法に関するドキュメントをチェックアウトできます http://www.dollarswift.org/#indexof-str-string-int

于 2014-11-22T22:31:58.353 に答える