簡體   English   中英

如何在 String Swift4 中交換兩個字符?

[英]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的索引。 然后你可以提出一個真正的問題。 在這里閱讀:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM