J'ai la fonction suivante qui inverse l'ordre d'affichage d'une valeur de chaîne. Je suis nouveau à Swift et j'essaie de comprendre sa logique. Que se passe-t-il avec la valeur '! Pleh' qui se transforme en 'Help!' ? Merci
func reverse(_ s: String) -> String {
var str = ""
for character in s.characters {
str = "\(character)" + str
}
return str
}
print (reverse("!pleH"))
Commenté en ligne,
func reverse(_ s: String) -> String {
var str = ""
//.characters gives the character view of the string passed. You can think of it as array of characters.
for character in s.characters {
str = "\(character)" + str
//This will help you understand the logic.
//!+""
//p+!
//l+p! ... goes this way
print ( str)
}
return str
}
print (reverse("!pleH"))
Dans Swift 4.0, appeler directement reversed
sur une chaîne fera le travail
let str = "abc"
String(str.reversed()) // This will give you cba
La fonction reversed(_:)
itère chaque Character
dans la chaîne fournie s
et les concenène simplement dans l'ordre inverse.
// 1st pass in the 'for' loop:
// @ start of iteration: 'str' equals ""
// update value of 'str' according to
// str = aCharacterAsString + str = "!" + ""
// 2nd pass in the 'for' loop:
// @ start of iteration: str equals "!"
// update value of 'str' according to
// str = anotherCharacterAsString + str = "p" + "!"
// 3rd pass in the 'for' loop:
// @ start of iteration: str equals "p!"
// update value of 'str' according to
// str = yetAnotherCharacterAsString + str = "l" + "p!"
// and so on ...
// after end of 'for' loop: str == "help!"
// this value of 'str' is then return to callee (which prints it)
Une approche beaucoup plus simple consisterait à utiliser reversed()
sur CharacterView
de l’instance String
:
let str = "!pleH"
print(String(str.characters.reversed())) // Help!
Swift 4 Vous pouvez l'utiliser directement dans votre chaîne
let str = "!pleH"
print(String(str.reversed())) // Help!
var string = "My,playground and my Swift"
var reverseString = ""
for str in string {
reverseString.insert(str, at: reverseString.startIndex)
}
print(reverseString)
In Swift 4 - Inverser la chaîne ::
func reverse(string:String) -> String {
var reverse = ""
for char in string {
reverse = char.description + reverse
}
return reverse
}
Entrée :: reverse (string: "Ashish Chhabra")
Sortie :: arbahhC hsihsA
Vous pouvez utiliser ci-dessous code-
let str = "My name is Kplin Cours"
var reverseString = ""
for i in 0..<str.count {
let index = str.index(str.startIndex, offsetBy: (str.count - 1) - i)
// print(String(str[index]))
reverseString = reverseString + String(str[index])
}
print(reverseString) //sruoC nilpK si eman yM
Variation différente de la réponse en utilisant Caractère et Index.
//Reverse String
func reverse(str:String)->String{
var chars = [Character]()
for i in (0...str.count).reversed() {
let index = str.index(str.startIndex, offsetBy: i)
chars.append(str[index])
}
return String(chars)
}