Как разделить имя файла от расширения файла в Swift?

Данный название файла в пакете, я хочу, загружают файл в мое приложение Swift. Таким образом, я должен использовать этот метод:

let soundURL = NSBundle.mainBundle().URLForResource(fname, withExtension: ext)

По любой причине для метода нужно имя файла, разделенное от расширения файла. Прекрасный, достаточно легко разделить два на большинстве языков. Но до сих пор я не нахожу, что это так в Swift.

Таким образом, вот то, что я имею:

var rt: String.Index = fileName.rangeOfString(".", options:NSStringCompareOptions.BackwardsSearch)
var fname: String = fileName .substringToIndex(rt)
var ext = fileName.substringFromIndex(rt)

Если я не включаю ввод в первую строку, я получаю ошибки на двух последующих строках. С ним я получаю ошибку на первой строке:

Cannot convert the expression's type '(UnicodeScalarLiteralConvertible, options: NSStringCompareOptions)' to type 'UnicodeScalarLiteralConvertible'

Как я могу разделить имя файла от расширения? Там некоторый изящный путь состоит в том, чтобы сделать это?

Я был все взволнован Swift, потому что это походило на намного более изящный язык, чем Objective C. Но теперь я нахожу, что это имеет свою собственную громоздкость.


Вторая попытка: Я решил сделать свой собственный метод поиска строки:

func rfind(haystack: String, needle: Character) -> Int {
    var a = Array(haystack)

    for var i = a.count - 1; i >= 0; i-- {
        println(a[i])
        if a[i] == needle {
            println(i)
            return i;
        }
    }
    return -1
}

Но теперь я получаю ошибку на строке var rt: String.Index = rfind(fileName, needle: "."):

'Int' is not convertible to 'String.Index'

Без броска я получаю ошибку на двух последующих строках.

Кто-либо может помочь мне разделить это имя файла и расширение?

60
задан 3 November 2014 в 06:29

2 ответа

Последние Быстрые 4,2 работы как это:

extension String {
    func fileName() -> String {
        return URL(fileURLWithPath: self).deletingPathExtension().lastPathComponent
    }

    func fileExtension() -> String {
        return URL(fileURLWithPath: self).pathExtension
    }
}
4
ответ дан 31 October 2019 в 16:35

Быстро 5

 URL(string: filePath)?.pathExtension
3
ответ дан 31 October 2019 в 16:35

Другие вопросы по тегам:

Похожие вопросы: