如何在Swift中创建subString?

时间:2015-07-03 09:35:29

标签: string swift

假设我有这样的价值

苹果(100)

橙(300)

菠萝(10)

葡萄(50)

香蕉(1000)

如果我要从每个字符串中删除(xx),我在Swift中需要做什么?有什么帮助吗? 我只能找到可以用范围剪切字符串的方法。但是,我遇到了问题。

我想要的是

苹果

...

4 个答案:

答案 0 :(得分:2)

你可以这样做:

var string = "Apple(100)"                               //"Apple(100)" 
let newStr = string.componentsSeparatedByString("(")    //["Apple", "100)"]
newStr[0]                                               //"Apple"

如果你想修改整个数组,那么你可以使用这个函数:

func seprateString(arr: [String]) -> [String] {
    var newArr = [String]()
    for item in arr {
        let newStr = item.componentsSeparatedByString("(")
        newArr.append(newStr[0])
    }
    return newArr
}


let fruitArr = ["Apple(100)", "Orange(300)", "Pineapple(10)", "Grape(50)", "Banana(1000)"]
let newArrayForFruit = seprateString(fruitArr)

OutPut将是:

["Apple", "Orange", "Pineapple", "Grape", "Banana"]

答案 1 :(得分:1)

这是纯粹的Swift 2版本......

func stripBraces(s: String) -> String {
  guard let range = s.rangeOfString("(") else {
    return s
  }

  return s.substringToIndex(range.startIndex)
}

let strings = [ "Apple(100)", "Orange(300)", "NoBraces" ]
let strippedStrings = strings.map(stripBraces)
print(strippedStrings)

...如果您的字符串更复杂,请考虑使用NSRegularExpression

答案 2 :(得分:0)

如果字符串在数组中,您可以使用单行

映射它们
let fruitArray = ["Apple(100)", "Orange(300)", "Pineapple(10)", "Grape(50)", "Banana(1000)"]
let mappedArray = fruitArray.map { (string : String) in string.substringToIndex(find(string, "(")!)}

答案 3 :(得分:0)

在Swift 1中:

return fruitArray.map {
    $0[$0.startIndex..<(find($0, "(") ?? $0.endIndex)]
}

在Swift 2中:

fruitArray.map {
    $0[$0.startIndex..<($0.characters.indexOf("(") ?? $0.endIndex)]
}