我来自Java.我研究了Swift文档并理解了大部分概念.
我现在寻找的是等同于Java indexOf和lastIndexOf方法来查找字符串中子字符串的位置.
我已经找到了一个使用rangeOfString并使用startIndex属性的解决方案.这看起来有助于我定义indexOf方法.
但我认为rangeOfString只从字符串的开头开始搜索.它是否正确?如果是这样,我怎样才能反向搜索(从字符串的结尾开始)?
我的意思是让fe字符串为"hello world",如果我开始搜索"l",那么我想找到位置9处的字母而不是位置2处的字母.
Dan*_*nyl 25
在Swift 3中
Java indexOf等价物:
var index1 = string1.index(string1.endIndex, offsetBy: -4)
Run Code Online (Sandbox Code Playgroud)
Java lastIndexOf等价物:
var index2 = string2.range(of: ".", options: .backwards)?.lowerBound
Run Code Online (Sandbox Code Playgroud)
extension String {
func indexOf(_ input: String,
options: String.CompareOptions = .literal) -> String.Index? {
return self.range(of: input, options: options)?.lowerBound
}
func lastIndexOf(_ input: String) -> String.Index? {
return indexOf(input, options: .backwards)
}
}
"hello world".indexOf("l") // 2
"hello world".lastIndexOf("l") // 9
Run Code Online (Sandbox Code Playgroud)
如果您希望返回的值为 Int:
extension String {
func lastIndex(of string: String) -> Int? {
guard let index = range(of: string, options: .backwards) else { return nil }
return self.distance(from: self.startIndex, to: index.lowerBound)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5479 次 |
| 最近记录: |