Swift3.0語言教程使用路徑字串
Swift3.0語言教程使用路徑字串
Swift3.0語言教程使用路徑字串,路徑其實是字串的一種,我們稱為路徑字串。本小節將講解如何使用路徑字串。
1.組合路徑
開發者可以將陣列快速的組合成一個路徑,此功能的實現可以使用NSString中的path(withComponents:)方法,其語法形式如下:
class func path(withComponents components: [String]) -> String
其中,components是一個字串陣列。
【示例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.分割路徑
在NSString中有組合路徑相對的就有分割路徑,使用pathComponents屬性就可以實現此功能,其語法形式如下:
var pathComponents: [String] { get }
【示例1-81】以下將實現路徑的分割。
import Foundation
var path=NSString(string:"/Users/mac/Desktop/File.txt")
print(path.pathComponents) //分割路徑
執行結果如下:
["/", "Users", "mac", "Desktop", "File.txt"]
3.獲取路徑資訊
當一個路徑很長的時候,我們要獲取路徑的一些內容就會變得非常困難,在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
其中,引數說明如下:
q outputName:用來指定一個NSString型別的變數指標。
q flag:用來指定是否區分大小寫。
q outputArray:用來指定一個NSArray型別的變數指標,其中包含了所有匹配的檔名程式。
q filterTypes:用來指定一個字串陣列,此陣列中包含了用來查詢的副檔名。
【示例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語言教程使用路徑字串
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2128619/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C語言字串C語言字串
- C語言 - 字串拼接C語言字串
- GO語言————4.6 字串Go字串
- Linux 核心網路包路徑追蹤利器 skbtracer,Go 語言版本LinuxGo
- C語言字串例題C語言字串
- Go語言字串高效拼接(二)Go字串
- Go語言字串高效拼接(一)Go字串
- Go語言字串高效拼接(三)Go字串
- dijkstra演算法筆記(C語言實現,顯示路徑)演算法筆記C語言
- go語言從新手到就業,學習路徑圖!(附帶學習教程),一步到位!Go就業
- C語言知識彙總 | 51-C語言字串指標(指向字串的指標)C語言字串指標
- C語言進階[2]:字串常量C語言字串
- C語言sizeof()變數、字元、字串C語言變數字元字串
- 字串處理,push pop路徑,組合命令字串
- Nodejs教程12:path(路徑)模組NodeJS
- C語言 Make命令教程C語言
- Prolog 語言入門教程
- e語言 取文字右邊的字串字串
- 《快學 Go 語言》第 7 課 —— 字串Go字串
- R 語言使用
- go語言使用Go
- R語言的入門教程R語言
- go語言快速入門教程Go
- C語言精品影片教程大全C語言
- PyQt教程——程式語言切換(Qt Linguist和pylupdate的使用)QTNGUI
- C語言:使用指標將兩段字串連線起來輸出C語言指標字串
- Python語言怎麼把列表轉為字串?Python字串
- C語言學習之:指標與字串C語言指標字串
- GO語言字串有哪些?詳細分類Go字串
- 精通Python自然語言處理 1 :字串操作Python自然語言處理字串
- C語言教程——03 C語言結構C語言
- Golang語言包-字串處理strings和字串型別轉換strconvGolang字串型別
- Python科研武器庫 - 字串操作 - 路徑字串分割 os.path.split()、os.path.splitext()Python字串
- Go 語言入門教程:變數Go變數
- plsq安裝教程及語言更改
- 《C 語言入門教程》釋出了
- Thrift RPC 系列教程(1)——Thrift語言RPC
- Flutter教程(二) 瞭解Dart語言FlutterDart
- 最短路徑——dijkstra演算法程式碼(c語言)演算法C語言