在Swift4中,String是Collections。您将不再在字符串上使用characters属性。
func swapCharacters(input:String,index1:Int,index2:Int)-> String { // logic to swap }
let input = "ABCDEFGH"
如果我用(输入,3,8)调用该函数,那么输出应该是
输出:ABCHEFGD
注意:在Swift4中,字符串是集合。
由于String
是一个集合,相当简单:
func swapCharacters(input: String, index1: Int, index2: Int) -> String {
var characters = Array(input)
characters.swapAt(index1, index2)
return String(characters)
}
let input = "ABCDEFGH"
print(swapCharacters(input: input, index1: 3, index2: 7)) //ABCHEFGD
或者,提供类似直接阵列的操作:
extension String {
mutating func swapAt(_ index1: Int, _ index2: Int) {
var characters = Array(self)
characters.swapAt(index1, index2)
self = String(characters)
}
}
var input = "ABCDEFGH"
input.swapAt(3, 7)
print(input) //ABCHEFGD
你的问题没有意义。 Swift中的字符串未被Int索引。你需要首先弄清楚角色到底是什么(扩展字形集群)。然后你需要弄清楚为什么Int不能用作Strings的索引。然后你可以提出一个真正的问题。在这里阅读: