Swift 如何从字符串中间删除字符?斯威夫特4 我试图删除字符串中间的一个字符。< /P>

Swift 如何从字符串中间删除字符?斯威夫特4 我试图删除字符串中间的一个字符。< /P>,swift,string,Swift,String,这就是我想做的 let index=4 let str=“abcdefg” 让strRemoved=str.remove(at:index)//只删除位置4处的字符 打印(strRemoved)//打印'abcdfg' 你不能Stringcollection的索引它不是Int,但您可以实现自己的remove(at:)方法,该方法以Int作为参数。请注意,要从集合中删除元素,需要将其声明为变量: 操场测试: let index = 4 var abc = "abcdefg" if let r

这就是我想做的

let index=4
let str=“abcdefg”
让strRemoved=str.remove(at:index)//只删除位置4处的字符
打印(strRemoved)//打印'abcdfg'

你不能
String
collection的索引它不是Int,但您可以实现自己的
remove(at:)
方法,该方法以
Int
作为参数。请注意,要从集合中删除元素,需要将其声明为变量:



操场测试:

let index = 4
var abc = "abcdefg"

if let removedChar = abc.remove(at: index) { // Removes at pos 4
    print(removedChar) // prints 'e'
    print(abc) // prints 'abcdfg'
}

我们来看一个示例用例,其中我们从字符串中删除随机字母,直到字符串为空,从而了解如何从
字符串的中间删除字符


方法1:使用
String.remove(在:)
删除字符

这里我们使用方法
String.remove(at:)
来选择要删除的字符。不幸的是,
String
s没有使用
Int
索引,因此您需要提供一个
字符串。Index
值:

var str = "abcdefg"

while str.count > 0 {
    let randomIndex = Int.random(in: 0 ..< str.count)
    str.remove(at: str.index(str.startIndex, offsetBy: randomIndex))
    print(str)
}

方法2:使用
prefix()
dropFirst()
构造新的
字符串

或者,您可以使用
prefix()
dropFirst()
选择原始
字符串的一部分来构造新的
字符串。这两种方法都返回type
Substring
,因此在连接部件后需要调用
String()

var str = "abcdefg"

while str.count > 0 {
    let randomIndex = Int.random(in: 0 ..< str.count)
    str = String(str.prefix(randomIndex) + str.dropFirst(randomIndex + 1))
    print(str)
}

方法3:将
str
转换为
[字符]

如果您要重复添加、删除和更改字符,请考虑将<<代码>字符串 >转换为<代码> [字符] < /代码>。这更容易使用,因为

[Character]
可以使用
Int
索引,并且您可以轻松地将名为
chars
[Character]
变回
字符串
字符串(chars)


有什么问题吗?请注意,索引从0开始,而不是1。声明
var str=“abcdefg”
然后
让strRemoved=str.remove(at:str.index(str.startIndex,offsetBy:4))
abdefg
bdefg
befg
bfg
bf
f
var str = "abcdefg"

while str.count > 0 {
    let randomIndex = Int.random(in: 0 ..< str.count)
    str = String(str.prefix(randomIndex) + str.dropFirst(randomIndex + 1))
    print(str)
}
abcdeg
abcde
acde
acd
cd
c
var str = "abcdefg"
var chars = Array(str)

while chars.count > 0 {
    let randomIndex = Int.random(in: 0 ..< chars.count)
    chars.remove(at: randomIndex)
    print(String(chars))
}
acdefg
acefg
aceg
aeg
ae
a