我试图在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
之后获得/
?
如何增加/减少和范围索引以避免出现空格?
答案 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()
}
我强烈建议你不要像这样强行打开包装。考虑这种情况,如果此代码将使用没有特定模式的字符串,例如空字符串。正确,运行时错误。