【问题标题】:Reversing the order of a string value反转字符串值的顺序
【发布时间】:2017-01-21 16:49:46
【问题描述】:

我有以下函数可以反转字符串值的显示顺序。 我是 Swift 的新手,我试图理解它的逻辑。 '!pleh' 值变成了 'Help!' 是怎么回事? ? 谢谢

func reverse(_ s: String) -> String {
 var str = ""
 for character in s.characters {
    str = "\(character)" + str
 }
 return str
}
print (reverse("!pleH"))

【问题讨论】:

  • print (reverse("!pleH")) 语句不是reverse 函数的一部分。很确定这只是为了演示该功能,并且与实际反转字符串无关。

标签: swift function character


【解决方案1】:

在 swift 4.0 中,直接在字符串上调用 reversed 即可完成工作

let str = "abc"
String(str.reversed()) // This will give you cba

【讨论】:

  • 你确定..?
  • 我需要知道这个reversed()函数在Xcode中的实现或定义。我怎么做 ?我已经尝试跳转到定义,但我找不到函数的主体。
【解决方案2】:

注意:如果你不想使用reversed()内置函数,那么你可以使用下面的代码。[要求采访]

在字符串上使用高阶函数“Reduce”的单线。

extension String {
func reverse() -> String  { return self.reduce("") { "\($1)" + $0 } }
}

【讨论】:

    【解决方案3】:

    内联注释,

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

    【讨论】:

    • 大多数时候,在那些简单的问题中,我们需要知道如何在没有函数的情况下做到这一点。你做得很简单。恭喜
    【解决方案4】:

    函数reversed(_:) 遍历提供的字符串s 中的每个Character,并简单地将它们以相反的顺序连接起来。

    // 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)
    

    更简单的方法是在String 实例的CharacterView 上使用reversed()

    let str = "!pleH"
    print(String(str.characters.reversed())) // Help!
    

    Swift 4你可以直接在你的字符串中使用它

    let str = "!pleH"
    print(String(str.reversed())) // Help!
    

    【讨论】:

    • 哇,我从来没有那样看...感谢您的快速回复这是我学习如何编码的第一周!
    • @Leo,您通过将解决方案添加到此答案中,使方明的答案变得多余。
    • @WiktorStribiżew 他的回答也可能只是这个答案中的评论
    • 注意:由于 reversed 函数返回一个字符集合,而不是一个字符串,这就是我们使用字符串初始化器将该集合转换回字符串的原因。
    【解决方案5】:
    var string = "My,playground and my Swift" 
    var reverseString = ""  
    for str in string { 
        reverseString.insert(str, at: reverseString.startIndex) 
    }  
    print(reverseString)
    

    【讨论】:

      【解决方案6】:

      在 Swift 4 中 - 反转字符串 ::

      func reverse(string:String) -> String {
      
          var reverse = ""
      
          for char  in string {
      
              reverse = char.description + reverse
          }
          return reverse
      }
      

      输入 :: reverse(string: "Ashish Chhabra")

      输出 :: arbahhC hsihsA

      【讨论】:

        【解决方案7】:
        var strnew = "hello world new" 
        
        var reverseStr = ""
        
        for each in strnew
        {
            reverseStr = String(each) + reverseStr
        }
        
        print(reverseStr)
        

        【讨论】:

          【解决方案8】:

          使用字符和索引的不同答案变体。

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

          【讨论】:

            【解决方案9】:

            您可以使用以下代码-

            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
            

            【讨论】:

              【解决方案10】:
              let string = readLine()!
              var resultString = ""
              for i in 1...string.count {
                  let index = string.index(string.endIndex, offsetBy: -i)
                  resultString.append(string[index])
              }
              print(resultString)
              

              【讨论】:

              • edit 你的答案并添加一些解释以提高你的答案质量
              • 我猜它不言自明@barbsan
              【解决方案11】:
              let inputstr = "ABCDEFGHIGKLMNPO"
              var resultstr = "";
                  for strchar in inputstr {
                   resultstr = String(strchar) + resultstr
                  }
                                print("Result = ",resultstr)
              

              【讨论】:

              • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常质量更高,更有可能吸引投票。
              【解决方案12】:

              斯威夫特 5

              extension String {
                  func invertedEntropy() -> String {
                      var word = [Character]()
                      for char in self {
                          word.insert(char, at: 0)
                      }
                      return String(word)
                  }
              }
              var palindrome = "TENET"
              palindrome.invertedEntropy()
              
              // "TENET"
              

              【讨论】:

                【解决方案13】:

                就这么简单!

                let str = "Hello, world!"
                let reversed = String(str.reversed())
                print(reversed)
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-12-01
                  • 2010-11-03
                  • 2011-11-07
                  • 1970-01-01
                  • 2021-12-09
                  相关资源
                  最近更新 更多