web-dev-qa-db-fra.com

Inverser l'ordre d'une valeur de chaîne

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"))
5
Yiu Chung Wong

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"))
5
Vignesh

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
10
Fangming

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!
6
dfri
var string = "My,playground and my Swift" 
var reverseString = ""  
for str in string { 
    reverseString.insert(str, at: reverseString.startIndex) 
}  
print(reverseString)
4
Sourabh Kumbhar

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

0
Ashish Chhabra

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
0
Pankaj Jangid

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)
}
0