2016-07-21 89 views
0

我在Swift中使用iOS MapKit。我獲得了路線方向的桌面視圖。然後我將它們保存到一個文本文件(Roads.txt)中。一旦在文本文件中,我想剝離除道路名稱以外的所有內容。這意味着我想剝離諸如「North」,「Turn」,「Right」等單詞。有什麼方法可以在Swift中執行此操作,還是必須將文件保存到數據庫並在其中處理更改?用Swift從文本文件中刪除單詞

我的代碼,它的工作原理,如下所示:

// Assign variables 
let steps = directionsArray[indexPath.section].route.steps 
let step = steps[indexPath.row] 
let instructions = step.instructions 
let distance = step.distance.kilometers() 

// Save Directions to text file 
let directions = ["\(instructions) - \(distance),"] 
let filePath = getDocumentsDirectory().stringByAppendingPathComponent("Roads.txt") 
let directionstext = directions.joinWithSeparator("\n") 
do { 
    try directionstext.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding) 
} catch { 
print ("Error it did not write to file") 
} 

//read directions from text file 

let file = "Roads.txt" // read from this file 
if let dir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first { 
    let path = NSURL(fileURLWithPath: dir).URLByAppendingPathComponent(file) 
do { 
    let Direc = try NSString(contentsOfURL: path, encoding: NSUTF8StringEncoding) 
    print(Direc) 
} 
catch {print("failed to find file")} 
} 
+0

您可以分享您的輸出文件的內容目前的樣子嗎?另外,你想要什麼作爲最終結果?你只需要一個只包含道路名稱的文件,或者你還需要所有方向的版本? – Westside

+0

嗨克里斯,謝謝你的回覆!當前的文本文件如下所示繼續無限循環 - 0.00, 右轉進入N De Anza Blvd - 0.08, 右轉併合到I-280 S - 0.12, 從3A出口合併到CA-87 - 7.81, 右邊合併到Guadalupe Parkway S - 0.25, 左邊合併到CA-87 S - 0.85,我希望它看起來像無限循環 - 0.00, N De Anza Blvd - 0.08, I- 280 S - 0.12, CA-87 - 7.81, Guadalupe Parkway S - 0.25, CA-87 S - 0.85,親切的問候Jonathan –

+0

所以你在尋找的是一個方法來拆分每個步驟的指令屬性隔離道路名稱​​。不幸的是,這並不容易,因爲對於需要刪除的內容沒有明確的規則。如果你試圖通過搜索「轉向」或「轉向」這樣的詞做到這一點,那麼它會被諸如「特納街」或「多倫多大道」之類的道路名稱絆住,並且存在諸如「將3A出口合併到......「意味着對於所有不同的出口可能有大量的潛在指示。有什麼辦法可以得到詳盡的可能指示清單嗎? – Westside

回答

0

好吧,基於以上信息,我認爲有兩種可能的途徑採取與本(雙關語意)......

選項1:配置信息的「後端」或信息來源,以便以兩部分的方式提供說明 - 方向和街道 - 這樣,您可以在創建所需的部分時丟棄不需要的部分文件。這將是簡單和整齊,但可能或不可能。

選項2:過濾文件以刪除不需要的信息。 爲了演示理論,我們假設只有兩條可能的指令:「左轉上」和「右轉上」。然後,您可以用下面的代碼去除所有的指令出來的文件:

let possibleInstructions = ["Turn left onto ", "Turn right onto "] 
for instruction in possibleInstructions { 
    direc = direc.stringByReplacingOccurrencesOfString(instruction, withString: "") 
} 

哪裏direc是,你正在閱讀和possibleInstructions該文件中所有可能出現在該文件可能說明一個數組。例如,這需要:

左轉進入無限循環 - 0.00,右轉進入N De Anza Blvd - 0.08,左轉進入I-280 S - 0.12,右轉進入CA-87 - 7.81,右轉駛入瓜達盧佩大路的S - 0.25,左轉進入到CA-87的S - 0.85

,並返回:

無限循環 - 0.00,N迪安薩大道 - 0.08,I-280的S - 0.12 ,CA-87-7.81,Guadalupe Parkway S-0.25,到CA-87 S - 0.85

顯然,可能的指令列表將會比這更長,並且您需要額外的代碼來處理特殊情況,例如「退出X以合併到」,但這聽起來像是這個過程中後面的一個挑戰。

+0

我只想說聲謝謝你所有的迴應。它真的幫助和工作 –

+0

偉大的東西,不要忘記接受答案,如果它爲你工作,歡呼聲。 – Westside

+0

高興 - 我該怎麼做? –