[英]How to swap two characters in String Swift4?
在 Swift4 中,字符串是 Collections。 您将不再在字符串上使用字符属性。
func swapCharacters(input:String,index1:Int,index2:Int)-> String { // logic to swap }
let input = "ABCDEFGH"
如果我用(input,3,8)调用 function 那么 output 应该是
Output: ABC H EFG D
注意:在 Swift4 中,字符串为 collections。
因为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
如果您正在寻找字符串操作而不将其转换为数组。 我不会说这是一个很好的解决方案,但它确实有效。
func swapCharacters(input: String, index1: Int, index2: Int) -> String {
var result = input
let index1Start = input.index(input.startIndex, offsetBy: index1)
let index1End = input.index(after: index1Start)
let index2Start = input.index(input.startIndex, offsetBy: index2)
let index2End = input.index(after: index2Start)
let temp = input[index2Start..<index2End]
result.replaceSubrange(index2Start..<index2End,
with: input[index1Start..<index1End])
result.replaceSubrange(index1Start..<index1End, with: temp)
return result
}
打印(swapCharacters(输入:“ABCDEFGH”,index1:3,index2:7))
印刷品:ABC H EFG D
你的问题没有意义。 Swift中的字符串未被Int索引。 你需要首先弄清楚角色到底是什么(扩展字形集群)。 然后你需要弄清楚为什么Int不能用作Strings的索引。 然后你可以提出一个真正的问题。 在这里阅读:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.