最近开发个小项目,涉及到 Unix 的文件名特殊字符的处理问题

2017-02-09 23:29:51 +08:00
 wym572

需求是某个文件会保存在 Document 文件夹中,这个文件名得是根据用户输入的一串字符(userInput)再加上生成的当前日期(currentDate)组成的。

但是如果直接用 userInput 的话,比如说里面带有空格,保存之后还按照 userInput+currentDate 拼接打开的话就会报错。

我希望保存的文件名是用户可辨识的字符串,所以希望只替换部分特殊字符,不知有没有现成的合适的开源库可以自动把影响文件读取的特殊字符替换掉?

谢谢。

3802 次点击
所在节点    iDev
4 条回复
wym572
2017-02-09 23:49:46 +08:00
好吧,自己解决了,参考 http://stackoverflow.com/questions/6102333/what-characters-are-allowed-in-a-ios-file-name

Swift3 下用:
var invalidCharacters = CharacterSet(charactersIn: ":/")
invalidCharacters.formUnion(CharacterSet.whitespacesAndNewlines)
invalidCharacters.formUnion(CharacterSet.illegalCharacters)
invalidCharacters.formUnion(CharacterSet.controlCharacters)
let filename = userInput.components(separatedBy: invalidCharacters).joined(separator: "_")
slixurd
2017-02-10 00:14:58 +08:00
这多麻烦,无脑 Base64 一下简单方便.....
kitalphaj
2017-02-10 07:38:23 +08:00
其实如果不考虑文件名的话完全可以名字是 UUID ,然后把用户输入的名字保存成文件自定义属性。
hythyt9898
2017-02-10 08:54:25 +08:00
正则替换下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/339435

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX