假设我有这样的价值
苹果(100)
橙(300)
菠萝(10)
葡萄(50)
香蕉(1000)
如果我要从每个字符串中删除(xx),我在Swift中需要做什么?有什么帮助吗? 我只能找到可以用范围剪切字符串的方法。但是,我遇到了问题。
我想要的是
苹果
橙
...
答案 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)]
}