Строки в Свифте могут быть определенно сложными. Если вам нужен чистый метод Swift, вот как бы я это сделал:
find
, чтобы найти последнее вхождение "."
в reverse
строки advance
, чтобы получить правильный индекс "."
в исходной строке String
subscript
, которая принимает IntervalType
, чтобы получить строки Что-то вроде этого:
func splitFilename(str: String) -> (name: String, ext: String)? {
if let rDotIdx = find(reverse(str), ".") {
let dotIdx = advance(str.endIndex, -rDotIdx)
let fname = str[str.startIndex..
Который будет использоваться как:
let str = "/Users/me/Documents/Something.something/text.txt"
if let split = splitFilename(str) {
println(split.name)
println(split.ext)
}
Какие выходы:
/Users/me/Documents/Something.something/text
txt
Или, просто используйте имеющиеся методы NSString
, такие как pathExtension
и stringByDeletingPathExtension
.