如何使用Swift生成子字符串?ios xcode

如何使用Swift生成子字符串?ios xcode,swift,Swift,在斯威夫特的音乐感觉很复杂 我想去 abc 从 最简单的方法是什么 我如何修复下面的代码才能正常工作 let str = "word(abc)" // get index of ( let start = str.rangeOfString("(") // get index of ) let end = str.rangeOfString(")") // substring between ( and ) let substring = str[advance(str.start

在斯威夫特的音乐感觉很复杂

我想去

abc

最简单的方法是什么

我如何修复下面的代码才能正常工作

let str = "word(abc)"

// get index of (
let start = str.rangeOfString("(")

// get index of ) 
let end = str.rangeOfString(")")  

// substring between ( and )
let substring = str[advance(str.startIndex, start!.startIndex), advance(str.startIndex, end!.startIndex)] 

Xcode 8.2•Swift 3.0.2

let text = "word(abc)"

// substring between ( and )
if let start = text.range(of: "("),
    let end  = text.range(of: ")", range: start.upperBound..<text.endIndex) {
    let substring = text[start.upperBound..<end.lowerBound]    // "abc"
} else {
    print("invalid input")
}
let text=“word(abc)”
//(和)之间的子字符串
如果let start=text.range(of)(“”),

让end=text.range(of:“)”,range:start.upperBound..您可以使用
stringByReplacingOccurrencesOfString

var a = "word(abc)" // "word(abc)"
a = a.stringByReplacingOccurrencesOfString("word(", withString: "") // "abc)"
a = a.stringByReplacingOccurrencesOfString(")", withString: "") // "abc"
或循环解决方案:

var a = "word(abc)"
for component in ["word(", ")"] {
    a = a.stringByReplacingOccurrencesOfString(component, withString: "")
}

但是对于更复杂的东西,正则表达式会更整洁。

使用正则表达式

let str = "ds)) ) ) (kj( (djsldksld (abc)"
var range: Range = str.rangeOfString("\\([a-zA-Z]*\\)", options:.RegularExpressionSearch)!
let subStr = str.substringWithRange(range).stringByReplacingOccurrencesOfString("\\(", withString: "", options: .RegularExpressionSearch).stringByReplacingOccurrencesOfString("\\)", withString: "", options: .RegularExpressionSearch)
println("subStr = \(subStr)")
请注意,如果字符串中的“)”前置“(例如,对于
text=“foo”)栏(“
”),则会崩溃。
let str = "ds)) ) ) (kj( (djsldksld (abc)"
var range: Range = str.rangeOfString("\\([a-zA-Z]*\\)", options:.RegularExpressionSearch)!
let subStr = str.substringWithRange(range).stringByReplacingOccurrencesOfString("\\(", withString: "", options: .RegularExpressionSearch).stringByReplacingOccurrencesOfString("\\)", withString: "", options: .RegularExpressionSearch)
println("subStr = \(subStr)")