以下是我在Python代码中尝试做的事情(可能是更精确的解释):
name = "#1: Joe Smith"
name = name[name.find(" "):]
基本上,尝试在第一个空格之后创建所有内容的子字符串,并且由于Swift没有使用整数索引生成子字符串的简单方法,因此它为我带来了大量的挣扎。
这是我在斯威夫特的尝试:
var name:String = "#1: Joe Smith"
var intIndex: Int = distance(name.startIndex, name.rangeOfString(" ").startIndex)
var startIndex = advance(" ".startIndex, intIndex)
var endIndex = advance(" ".startIndex, 0)
var substring: String = name[startIndex...endIndex]
答案 0 :(得分:1)
在这种情况下,无需使用advance
或distance
。由于您正在寻找 空间后的所有内容,因此我们可以使用endIndex
返回的范围内的rangeOfString
作为我们范围的startIndex
用于获取子字符串。
let name = "#1: Joe Smith"
if let spaceRange = name.rangeOfString(" ") {
// Get the substring from the character after the space to the end of the string
let substring = name[spaceRange.endIndex..<name.endIndex]
println(substring) // Joe Smith
}
答案 1 :(得分:0)
我想你想把整个字符串分成两个不同的部分,这样找到的第一个字符串将字符串分成两部分。这是我尝试这样做的,
extension String{
subscript(search: String ) -> [String]?{
let startIndex = self.startIndex
let endIndex = self.endIndex
let range = self.rangeOfString(search, options: NSStringCompareOptions.allZeros, range: Range(start: startIndex, end: endIndex), locale: NSLocale.currentLocale())
if let theRange = range{
let startIndex = advance(theRange.startIndex, -1)
let endRange = Range(start: theRange.endIndex, end:self.endIndex)
return [
self.substringToIndex(startIndex),
self.substringWithRange(endRange)
]
}
return nil
}
}
let a = "Hello, Mr. Andy"
a[" "]
// ["Hello", "Mr. Andy"]
let b = "My address is Tammisto, Vaanta"
join("", b["Tammisto,"]!)
// My address is Vaanta