gpt4 book ai didi

string - 如何从 Swift 中的路径更改各种重音符号和特殊字符?

转载 作者:搜寻专家 更新时间:2023-11-01 06:22:55 24 4
gpt4 key购买 nike

大家好吗?

我有一个简单的应用程序来显示用户选择的文件的文件大小。问题是,当文件位于文件夹名称中有空格或重音符 (á é ç) 等特殊字符的文件夹中时,文件路径使用不同的符号,然后我无法获取文件大小。

文件夹是:/Users/home/Checking/First Box

这是我的代码和输出:

var path = url.absoluteString?.stringByReplacingOccurrencesOfString("file://", withString: "", options: nil, range: nil)
var filePath = path
var attr:NSDictionary? = NSFileManager.defaultManager().attributesOfItemAtPath(filePath!, error: nil)
if let _attr = attr {
fileSize = _attr.fileSize();

}
println(fileSize)
println(filePath!)

文件大小的输出为 nil,文件路径的输出为/Users/home/Checking/First%20Box。

此外,如果我选择一个名称带有重音的文件夹,例如/Users/home/Checking/Café,路径的输出将为/Users/home/Checking/Cafe%CC%81

一个解决方案,这是我使用 stringByReplacingOccurrencesOfString 的解决方案,但这会在代码中增加很多行,因为世界各地的语言中都有许多带有重音符号的字符,我想知道是否还有另一种更简单的方法这个。

任何帮助将不胜感激。

最佳答案

问题是你使用了一个错误的(而且太复杂)的方法将文件 URL 转换为路径。

例子:

let url = NSURL(fileURLWithPath: "/ä/ö/ü")!
println(url.absoluteString!) // file:///a%CC%88/o%CC%88/u%CC%88
println(url.path!) // /ä/ö/ü

如您所见,.absoluteString 返回带有百分比转义的 HTML 字符串,而 .path 返回文件路径。所以你的代码应该是这样的:

if let filePath = url.path {
println(filePath)
if let attr : NSDictionary = NSFileManager.defaultManager().attributesOfItemAtPath(filePath, error: nil) {
let fileSize = attr.fileSize();
println(fileSize)
// ...
}
}

关于string - 如何从 Swift 中的路径更改各种重音符号和特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30101487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com