Swift3.0語言教程使用路徑字符串,路徑實際上是字符串的一種,咱們稱爲路徑字符串。本小節將講解如何使用路徑字符串。git
1.組合路徑數組
開發者能夠將數組快速的組合成一個路徑,此功能的實現能夠使用NSString中的path(withComponents:)方法,其語法形式以下:app
class func path(withComponents components: [String]) -> String
其中,components是一個字符串數組。ui
【示例1-80】如下將數組組合爲路徑。編碼
import Foundation let components:[String]=["Users","mac","Desktop","File.txt"] let path=NSString.path(withComponents: components) //組合路徑 print(path) 運行結果以下: Users/mac/Desktop/File.txt
2.分割路徑spa
在NSString中有組合路徑相對的就有分割路徑,使用pathComponents屬性就能夠實現此功能,其語法形式以下:.net
var pathComponents: [String] { get }
【示例1-81】如下將實現路徑的分割。指針
import Foundation var path=NSString(string:"/Users/mac/Desktop/File.txt") print(path.pathComponents) //分割路徑
運行結果以下:code
["/", "Users", "mac", "Desktop", "File.txt"]
3.獲取路徑信息component
當一個路徑很長的時候,咱們要獲取路徑的一些內容就會變得很是困難,在NSString中提供了不少的屬性爲咱們講解了這一難題。
(1)lastPathComponent屬性能夠獲取路徑的最後一部份內容(即文件名),其語法形式以下:
var lastPathComponent: String { get }
【示例1-82】如下將獲取路徑的最後一部份內容。
import Foundation var path=NSString(string:"/Users/mac/Desktop/File.txt") print(path.lastPathComponent) //獲取路徑的最後一部份內容
運行結果以下:
File.txt
(2)pathExtension屬性能夠獲取路徑的擴展名,其語法形式以下:
var pathExtension: String { get }
【示例1-83】如下將獲取路徑的擴展名。
import Foundation var path=NSString(string:"/Users/mac/Desktop/File.txt") print(path.pathExtension)
運行結果以下:
txt
(3)isAbsolutePath屬性能夠用來判斷路徑是否爲絕對路徑,其語法形式以下:
var isAbsolutePath: Bool { get }
【示例1-84】如下將判斷路徑是否爲絕對路徑。
import Foundation var path1=NSString(string:"/Users/mac/Desktop/File.txt") var path2=NSString(string:"mac/Desktop/File.txt") //判斷路徑path1是否爲絕對路徑 if(path1.isAbsolutePath){ print("path1是絕對路徑") }else{ print("path1不是絕對路徑") } //判斷路徑path2是否爲絕對路徑 if(path2.isAbsolutePath){ print("path2是絕對路徑") }else{ print("path2不是絕對路徑") }
運行結果以下:
path1是絕對路徑 path2不是絕對路徑
4.將路徑字符串轉換爲C字符串
路徑字符串也是能夠轉換爲C字符串的,此功能的實現須要使用到fileSystemRepresentation屬性。該屬性首先將這個路徑轉換成文件系統的規範形式,而後用UTF-8編碼造成C字符串,其語法形式以下:
var fileSystemRepresentation: UnsafePointer<Int8> { get }
【示例1-85】如下將路徑字符串轉換爲C字符串。
import Foundation var path=NSString(string:"/Users/mac/Desktop/File.txt") var str1="%s" var systemRepresentation=path.fileSystemRepresentation //轉換 var str2=NSString(format: str1,systemRepresentation) print(str2)
運行結果以下:
/Users/mac/Desktop/File.txt
5.簡化路徑
簡化路徑其實就是將系統的主目錄替換爲「~」,此功能的實現須要使用到abbreviatingWithTildeInPath屬性,其語法形式以下:
var abbreviatingWithTildeInPath: String { get }
【示例1-86】如下將簡化路徑。
import Foundation var path=NSString(string:"/Users/mac/Desktop/File.txt") print(path.abbreviatingWithTildeInPath) //簡化路徑
運行結果以下:
~/Desktop/File.txt
6.擴展路徑
在NSString中有簡化路徑的方法,相對的就會有擴展路徑的方法,此功能須要使用expandingTildeInPath屬性,該屬性能夠將「~」替換爲系統的主目錄,其語法形式以下:
var deletingPathExtension: String { get }
【示例1-87】如下將擴展路徑
import Foundation var path=NSString(string:"~/Desktop/File.txt") print(path.expandingTildeInPath) //擴展路徑
運行結果以下:
/Users/mac/Desktop/File.txt
7.追加路徑
開發中能夠在路徑後面追加路徑,若是想要實現此功能,能夠使用NSString中的appendingPathComponent(_:)、appendingPathExtension(_:)和strings(byAppendingPaths:)方法。
(1)appendingPathComponent(_:)方法能夠在路徑後面追加一個新的路徑,這個路徑是一個字符串,其語法形式以下:
func appendingPathExtension(_ str: String) -> String?
其中,str用來指定一個字符串。
【示例1-88】如下將使用appendingPathComponent(_:)方法追加一個路徑。
import Foundation var path=NSString(string:"/Users/mac/Desktop/File.txt") print("追加路徑前:\(path)") print("追加路徑後:\(path.appendingPathComponent("Plist.plist"))")
運行結果以下:
追加路徑前:/Users/mac/Desktop/File.txt 追加路徑後:/Users/mac/Desktop/File.txt/Plist.plist
(2)appendingPathExtension(_:)方法和appendingPathComponent(_:)方法相似,可是appendingPathExtension(_:)在路徑後面追加的新路徑是一個擴展名。其語法形式以下:
【示例1-89】如下將使用appendingPathExtension(_:)方法追加一個路徑。
import Foundation var path=NSString(string:"/Users/mac/Desktop/File") print("追加路徑前:\(path)") print("追加路徑後:\(path.appendingPathExtension("txt")!)")
運行結果以下:
追加路徑前:/Users/mac/Desktop/File 追加路徑後:/Users/mac/Desktop/File.txt
(3)appendingPathComponent(_:)和appendingPathExtension(_:)方法都是追加一個路徑,而strings(byAppendingPaths:)方法是追加多個路徑,其語法形式以下:
func strings(byAppendingPaths paths: [String]) -> [String]
其中,paths用來指定一個字符串數組。
【示例1-90】如下將使用strings(byAppendingPaths:)方法實現路徑的追加。
import Foundation let components:[String]=["File1.txt","File2.txt","File3.txt","File4.txt"] var path=NSString(string:"/Users/mac/Desktop/") var paths=path.strings(byAppendingPaths: components) //遍歷 for i in paths{ print(i) }
運行結果以下:
/Users/mac/Desktop/File1.txt /Users/mac/Desktop/File2.txt /Users/mac/Desktop/File3.txt /Users/mac/Desktop/File4.txt
8.刪除路徑
開發者能夠在路徑中追加路徑,也能夠刪除路徑,在NSString中刪除路徑的屬性有2個,分別爲deletingLastPathComponent屬性和deletingPathExtension屬性。
(1)deletingLastPathComponent屬性能夠用來刪除路徑中的最後一部份內容,其語法形式以下:
var deletingLastPathComponent: String { get }
【示例1-91】如下將使用deletingLastPathComponent屬性刪除路徑的最後一部份內容。
import Foundation var path=NSString(string:"/Users/mac/Desktop/File.txt") print("刪除路徑前:\(path)") print("刪除路徑後:\(path.deletingLastPathComponent)") //刪除路徑的最後一部份內容
運行結果以下:
刪除路徑前:/Users/mac/Desktop/File.txt 刪除路徑後:/Users/mac/Desktop
(2)deletingPathExtension屬性能夠刪除路徑的擴展名,其語法形式以下:
var deletingPathExtension: String { get }
【示例1-92】如下將使用deletingPathExtension屬性刪除路徑的擴展名。
import Foundation var path=NSString(string:"/Users/mac/Desktop/File.txt") print("刪除路徑前:\(path)") print("刪除路徑後:\(path.deletingPathExtension)") //刪除路徑的擴展名
運行結果以下:
刪除路徑前:/Users/mac/Desktop/File.txt 刪除路徑後:/Users/mac/Desktop/File
9.解析路徑中的符號連接
在大多數的路徑中都會存在不少的符號路徑,使得路徑變的很不規範。在NSString中的resolvingSymlinksInPath屬性將解析路徑中的符號路徑,將不規範的路徑變的規範,其語法形式以下:
var resolvingSymlinksInPath: String { get }
【示例1-93】如下將解析路徑中的符號連接。
import Foundation var path=NSString(string:"/.//tmp/ABC/..") print(path.resolvingSymlinksInPath) //解析路徑中的符號連接
運行結果以下:
/tmp
10.標準化路徑
在NSString中的standardizingPath屬性能夠移除在路徑中無關的部分,從而實現對路徑的標準化,其語法形式以下:
var standardizingPath: String { get }
【示例1-94】如下將標準化路徑。
import Foundation var path=NSString(string:"~/Desktop/File.txt/./tmp") print(path.standardizingPath) //標準化路徑 運行結果以下: /Users/mac/Desktop/File.txt/tmp
11.查詢文件夾下包含指定擴展名的文件路徑
爲了快速從文件夾中提取特定類型的文件,NSString提供了completePath(into:caseSensitive:matchesInto:filterTypes:)方法,其語法形式以下:
func completePath(into outputName: AutoreleasingUnsafeMutablePointer<NSString?>?, caseSensitive flag: Bool, matchesInto outputArray: AutoreleasingUnsafeMutablePointer<NSArray?>?, filterTypes: [String]?) -> Int
其中,參數說明以下:
【示例1-95】如下將在文件夾NSString中查詢擴展名爲txt、csv的路徑。
import Foundation var partialPath : NSString = "/Users/mac/Desktop/NSString/" var longestCompletition : NSString? var outputArray : NSArray? = [] var filterTypes = ["txt", "csv"] var allMatches = partialPath.completePath(into: &longestCompletition, caseSensitive: false, matchesInto: &outputArray, filterTypes: filterTypes) //查詢 print(outputArray!)
運行結果以下:
( "/Users/mac/Desktop/NSString/.git", "/Users/mac/Desktop/NSString/Build", "/Users/mac/Desktop/NSString/File.txt", "/Users/mac/Desktop/NSString/NSString", "/.DocumentRevisions-V100", …… "/Users", "/usr", "/var", "/Volumes" )
Swift3.0語言教程使用路徑字符串