用Swift操作字符串

时间:2015-09-08 23:27:39

标签: xcode macos swift2

我试图在Swift中划分一个String。我有以下字符串

Program - /path/to/file.doc

我想从这个字符串中获取三个信息 Program /path/to/file.doc file.doc

我从以下解决方案开始

var str = "Program - /path/to/file.doc"
let indi = str.rangeOfString("-")?.startIndex 
let subString = str.substringWithRange(Range<String.Index>(start: str.startIndex, end: indi!))
let subString2 = str.substringWithRange(Range<String.Index>(start: indi!, end: str.endIndex))

这给了我结果 "Program ",并 "- /path/to/file.doc"

但是如何在最后file.doc之后获得/

如何增加/减少和范围索引以避免出现空格?

1 个答案:

答案 0 :(得分:2)

是的,sidyll的建议是正确的,通过将其转换为NSURL来获取Unix路径的组件是一种非常常见的做法。你可能想写这样的东西:

var str = "Program - /path/to/file.doc"
if let indi = str.rangeOfString(" - ")?.startIndex {
    let subString = str.substringWithRange(Range<String.Index>(start: str.startIndex, end: indi))
    let subString2 = str.substringWithRange(Range<String.Index>(start: indi, end: str.endIndex))
    let fileName = NSURL(string: subString2).lastPathComponent()
}

我强烈建议你不要像这样强行打开包装。考虑这种情况,如果此代码将使用没有特定模式的字符串,例如空字符串。正确,运行时错误。