如何搜索和生成子串

时间:2014-09-26 22:02:04

标签: swift

以下是我在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]

2 个答案:

答案 0 :(得分:1)

在这种情况下,无需使用advancedistance。由于您正在寻找 空间后的所有内容,因此我们可以使用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