如何在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'
没有强制转换,我在随后的两行中都会出错。
谁能帮我拆分此文件名和扩展名?
-
这与Swift 2,Xcode 7一起使用:如果您已经具有扩展名的文件名,则可以将完整文件名作为第一个参数传递,并将空白字符串作为第二个参数传递:
let soundURL = NSBundle.mainBundle() .URLForResource("soundfile.ext", withExtension: "")
另外,nil作为扩展参数也可以使用。
如果您有一个URL,并且由于某种原因想要获取文件本身的名称,则可以执行以下操作:
soundURL.URLByDeletingPathExtension?.lastPathComponent
斯威夫特4
let soundURL = NSBundle.mainBundle().URLForResource("soundfile.ext", withExtension: "") soundURL.deletingPathExtension().lastPathComponent
-
如何在Python中从文件名替换(或剥离)扩展名?
2021-01-29 关注 0 浏览96 1答案
-
如何在 bash 脚本中检查文件名的扩展名?
2022-07-28 关注 0 浏览14 1答案
-
如何在Java中获取没有扩展名的文件名?
2022-05-26 关注 0 浏览23 1答案
-
如何在 Python 中替换(或去除)文件名的扩展名?
2022-07-28 关注 0 浏览11 1答案
-
如何在 shell 脚本中删除文件名的扩展名?
2022-07-28 关注 0 浏览12 1答案
-
如何从Python路径中获取不带扩展名的文件名?
2021-02-02 关注 0 浏览184 1答案
-
在Python中从文件名提取扩展名
2021-02-02 关注 0 浏览89 1答案
-
如何从Ruby中的文件路径获取不带扩展名的文件名
2022-07-28 关注 0 浏览17 1答案
-
如何在扩展名前向文件名添加ID?
2021-01-29 关注 0 浏览92 1答案
-
如何从 Python 中的路径获取不带扩展名的文件名?
2022-03-22 关注 0 浏览66 1答案