当前位置: 首页 > 面试题库 >

如何在Swift中从文件扩展名中拆分文件名?

柴良哲
2023-03-14
问题内容

给定捆绑中文件的名称,我想将该文件加载到我的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 2.X文档或Python 3.X文档): 与大多数手动字符串拆分尝试不同,它将正确地视为没有扩展而不是具有,并且将被视为没有扩展而不是具有:

  • 问题内容: 修剪Java后缀的最有效方法是什么,如下所示: 问题答案:

  • 问题内容: 我希望获取正在上传的图像的文件扩展名,但我只获得了一个数组。 有没有办法只是获得扩展本身? 问题答案: 无需使用字符串函数。您可以使用实际为您想要的东西设计的东西:

  • 问题内容: 这是一个您可以在网上到处阅读的各种问题,并有各种答案: 等等 但是,总有“最佳方法”,它应该在堆栈溢出中。 问题答案: 来自其他脚本语言的人们总是认为自己的语言更好,因为他们具有内置功能而不是PHP(我现在正在研究Pythonistas :-)。 实际上,它确实存在,但是很少有人知道。相约: 这是快速且内置的。可以根据传递给它的常量为您提供其他信息,例如规范路径。 请记住,如果您希望能

  • 问题内容: 假设给了我一个URI,并且我想找到返回的文件的文件扩展名,那么我必须在Java中做什么。 例如,位于http://www.daml.org/2001/08/baseball/baseball- ont 的文件为http://www.daml.org/2001/08/baseball/baseball- ont.owl 当我做 我无法看到带有扩展名的完整文件名,以及如何获取文件扩展名。`

  • 我目前正在尝试制作一个脚本,该脚本将grep输入以查看某些内容是否属于某种文件类型(例如zip),尽管文件类型之前的文本可以是任何内容,因此例如 都属于这一类。我正在尝试使用通配符grep这些,到目前为止,我已经尝试过了。 但是每当我这样做时,它都会发现文件很好,但是如果.zip之后有其他字符,它仍然会显示输出例如或仍然会被grep拾取。话虽如此,我应该怎么做才能防止 grep 在后显示具有其他字