在Swift中查找和替换

时间:2014-09-15 04:13:52

标签: swift

嗨我有两个阵列。

var firstArray = ["Hi", "Hello", "Mother"]
var secondArray = ["Yo", "Yee", "Father"]

现在说我做了一个println("我看到了约翰尼并说嗨")但它真的会用我的第二个字符串对象取代它,这是"哟"

所以几乎用第二个数组替换第一个数组中的所有内容,并且在任何时候有人在第一个数组中键入任何文字字符串时,它们会按照它们的顺序排列吗?我试图迅速做到这一点。我尝试使用stringByReplacingOccurrencesOfString循环遍历第一个数组,但我不确定如何在其中实现NSArray。有帮助吗?


如果我在下面做了怎么办?

var myString = "Hello this is a test."
var myDictionary = ["Hello":"Yo"]

for (originalWord, newWord) in myDictionary {
    let newString = aString.stringByReplacingOccurrencesOfDictionary(myString, withString:newWord, options: NSStringCompareOptions.LiteralSearch, range: nil)
}

我仍然无法弄清楚如果我把它放入println("你好,你好吗?)如果它自动知道替换"你好"每次用" yo"进入println语句时

2 个答案:

答案 0 :(得分:5)

您对使用字典的想法非常接近,您只需要继续替换myString而不是每次都创建一个新字符串,并正确调用stringByReplacingOccurrencesOfString

var myString = "Hello this is a test."
var myDictionary = ["Hello":"Yo"]

for (originalWord, newWord) in myDictionary {
    myString = myString.stringByReplacingOccurrencesOfString(originalWord, withString:newWord, options: NSStringCompareOptions.LiteralSearch, range: nil)
}

println(myString)

输出:

  

哟这是一个考验。

答案 1 :(得分:0)

如果数组中的对象符合Equatable协议(String确实符合),则可以使用find()

在操场上试试这个:

import UIKit

var firstArray = ["Hi", "Hello", "Mother"]
var secondArray = ["Yo", "Yee", "Father"]

var index = find(firstArray, firstArray[0])

println("first string: \(firstArray[0])")
println("replaced: \(secondArray[index!])")