swift - 使用replaceRange()来更改字符串中的某些事件

时间:2016-05-07 05:58:33

标签: ios xcode string swift

说我有一个字符串,我想改变第一个" a"在那个字符串中" e"为了得到正确的拼写。

let animal = "elaphant"

使用stringByReplacingOccurrencesOfString()会改变每个" a"在该字符串中的" e",返回:

elephent

我正在尝试获取第一个" a"的索引。然后使用replaceRange()替换它,如下所示:

let index = animal.characters.indexOf("a")
let nextIndex = animal.startIndex.distanceTo(index!)
animal = animal.replaceRange(animal.startIndex.advancedBy(nextIndex)..<animal.startIndex.advancedBy(1), with: "e")

但是,此代码给出了以下错误:

Cannot assign value of type '()' to type 'String'

我一直试图找到一种方法将nextIndex转换为Int,但我觉得我的整个方法都错了。帮助

4 个答案:

答案 0 :(得分:7)

这就是你想要做的:

var animal = "elaphant"
if let range = animal.rangeOfString("a") {
  animal.replaceRange(range, with: "e")
}

rangeOfString将搜索所提供的子字符串的第一个匹配项,如果找到该子字符串,它将返回一个可选范围,否则它将返回nil。

我们需要打开可选项,最安全的方法是使用if let语句,因此我们将范围分配给常量range

replaceRange会按照建议执行,在这种情况下,我们需要animalvar

答案 1 :(得分:3)

更新

Swift 4或更高版本

var animal = "elaphant"
if let index = animal.index(of: "a") {
    animal.replaceRange(index...index, with: "e")
}

答案 2 :(得分:0)

在游乐场测试:

var animal = "elaphant"
if let range = animal.rangeOfString("a") {
animal.replaceRange(range, with: "e")
}

print (animal)

答案 3 :(得分:0)

Swift4

var animal = "elaphant"

if let index = animal.index(of: "a") {
    animal.replaceSubrange(index...index, with: "e")
}

print (animal) // elephant