注意:不知道为什么这被标记为重复,因为我明确表示我不想一遍又一遍地使用 stringByReplacingOccurrencesOfString。
我对特殊字符文件名有疑问。
我已经实现了一个程序,这样当你打开一个或多个文件时,程序会读取所有这些文件名和本地路径并将它们存储到 NSMutableArray 中。这部分工作完美,没有问题。
我的程序还需要使用 NSTask 来操作这些文件。但是,问题是,有时文件名会包含特殊字符,例如 /Users/josh/Desktop/Screen Shot 2013-03-19 at 2.05.06 PM.png
.
我必须用反斜杠和空格替换空格
NSString *urlPath = [[self url] path];
urlPath = [urlPath stringByReplacingOccurrencesOfString:@"(" withString:@"\\("];
urlPath = [urlPath stringByReplacingOccurrencesOfString:@")" withString:@"\\)"];
urlPath = [urlPath stringByReplacingOccurrencesOfString:@" " withString:@"\\ "];
到:/Users/josh/Desktop/Screen\ Shot\ 2013-03-19\ at\ 2.05.06\ PM.png
这样我就可以正确操作文件。
(
和相同)
。在此之前我还需要添加反斜杠。
但是特殊字符太多了。IE。
/Users/josh/Desktop/~!@#$?:<,.>%^&*()_+`-={}[]\|'';.txt
我需要更改为:
/Users/josh/Desktop/\~\!@\#\$\?\:\<\,.\>\%^\&\*\(\)_+\`-\=\{\}\[\]\\\|\'\'\;.txt
更不用说其他特殊字符(即重音)
有什么简单的方法可以在每个特殊字符前面加上反斜杠,因为我不想stringByReplacingOccurrencesOfString
一遍又一遍地打电话。