使用Swift从文本文件中删除单词

时间:2016-07-21 10:39:41

标签: ios swift

我在Swift中使用iOS MapKit。我获得了路线方向的桌面视图。然后我将它们保存到文本文件(Roads.txt)中。一旦进入文本文件,我想除去道路名称之外的所有内容。这意味着我要删除像“North”,“Turn”,“Right”等字样。有没有办法在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")}
}

1 个答案:

答案 0 :(得分:0)

好的,根据以上信息,我认为有两条可能的路线(双关语)......

选项1:配置'后端'或者信息的来源,以便它将指令分两部分 - 方向和街道 - 这样您就可以丢弃在创建所需文件时不需要的位。这将是简单和整洁,但可能或可能不可能。

选项2:过滤文件以删除不需要的信息。 为了展示理论,我们假设只有两个可能的指令:"左转到"并且"右转进入"。然后,您可以使用以下代码从文件中删除所有指令:

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

其中direc是您正在读取的文件,possibleInstructions是该文件中可能出现的所有可能指令的数组。例如,这需要:

左转进入Infinite Loop - 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

并返回:

无限循环 - 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

显然,可能的指令列表会比这长得多,你需要额外的代码来处理特殊情况,比如"把X出口合并到",但听起来可能是这样的这个过程的后期挑战。