【问题标题】:Repeating String in Swift在 Swift 中重复字符串
【发布时间】:2016-02-19 17:07:09
【问题描述】:

我的任务是创建一个函数,该函数接受一个字符串和 int 的两个参数,该函数将返回一个字符串,该字符串将字符串参数重复 int 的次数。这是我想出的,但出现错误。顺便说一句,这是我在工作中使用的 CodeCardio,所以我无法在 Xcode 中对其进行测试(我的工作很糟糕并且使用 Windows)

func repeater(aString: String, withNumber: Int) -> String {
    let repeatedString = String(count: withNumber, repeatedValue: aString)
    return repeatedString
}

【问题讨论】:

    标签: swift function swift2 repeat


    【解决方案1】:
    String(count: withNumber, repeatedValue: aString)
    

    用于实例化带有重复字符的字符串:Does Swift init(count:, repeatedValue:) work?

    改为

    func repeater(string: String, withNumber number: Int) -> String {
        var repeatedString = String()
        for i in 0..<number {
            repeatedString += string
        }
        return repeatedString
    }
    

    【讨论】:

    • 哦,我知道那repeatValue 是如何不起作用的。查看您放置的功能,我不明白为什么它不起作用,但它也不允许这样做。它给出的错误是“意外的标识符”。我刚刚得出结论,CodeCardio 尚未与 Swift 2 保持同步,所以这就是它给我随机错误的原因。
    【解决方案2】:

    从 Swift 3 开始,init(repeating:count:) 也可以接受字符串参数。

    var repeatingString = String(repeating: "ab", count: 7)
    print(repeatingString) // ababababababab
    

    试试这个:

    func repeater(aString: String, withNumber: Int) -> String {
        let repeatedString = String(repeating: aString, count: withNumber)
        return repeatedString
    }
    

    【讨论】:

      【解决方案3】:

      String(count: repeatedValue: aCharacter) 的参数repeatedValue 的类型是单个Character 而不是String

      您可以使用Array(count: withNumber, repeatedValue: aString) 并加入项目

      func repeater(aString: String, withNumber: UInt) -> String {
        let repeatedArray = Array(count: Int(withNumber), repeatedValue: aString)
        return repeatedArray.joinWithSeparator("")
      }
      

      【讨论】:

      • 感谢您的解释!您放置的函数也返回错误,但我不明白为什么会这样。我刚刚得出结论,CodeCardio 还没有与 Swift 2 保持同步,所以这就是它给我随机错误的原因。
      • 我确定是的,我只是想在工作中寻找练习编码的方法,但我认为这个网站还不能用于 Swift。
      • @NicLaughter CodeCardio 使用 javasript、html 和 css :-O
      • 呃,这是有道理的。现在只是给建议我将其用于 Swift 练习的人一巴掌。
      【解决方案4】:

      你可以这样做:

      func repeater(aString string: String, withNumber number: Int) -> String {
          return [String](count: number, repeatedValue: string).reduce("", combine: +)
      }
      

      【讨论】:

        【解决方案5】:

        我稍微修改了 Tanguy 的答案。现在,如果第二个参数小于0,函数不会崩溃,而是返回一个空字符串

        func repeate(string: String,  times: Int) -> String {
            var repeatedString = ""
            var n = times
            while n > 0 {
                repeatedString += string
                n -= 1
            }
            return repeatedString
        }
        

        同样的问题有 Vadian 的回答,检查参数并提前返回 "" 可能是最好的解决方案。我个人更喜欢 Vadian 的方法。

        【讨论】:

        • 我将答案中的类型更改为UInt ;-)
        • @vadian :-) 如此简单......赞成! (有时混合 Int、UInt 等对于 swift 的程序员来说是一场噩梦)
        【解决方案6】:
        func repeatAString(anyString: String, numberOfTimes: Int) ->String
        {
            var returnString: String = String()
            for _ in 1...numberOfTimes 
            {
                returnString = returnString.stringByAppendingString(anyString)
            }
            return returnString
        }
        

        您好,我已经使用 stringByappendingString 来解决这个问题。我看到你有很多答案,但没有人建议我把它放在那里。干杯!

        【讨论】:

          【解决方案7】:

          斯威夫特 5:

          extension String {
              func repeater(by count: Int) -> String {
                  return String(repeating: self, count: count)
              }
          }
          

          调用:“testString”.repeater(by: counter)

          【讨论】:

            【解决方案8】:
            func repeater(aString: String, withNumber: Int) -> String 
            {
            var repeatedString=""
            for var index = 0; index < withNumber; ++index 
               {
                 repeatedString=repeatedString+aString
               }
            return repeatedString
            }
            

            对于函数调用,我使用: print(repeater("String",withNumber: 5))

            【讨论】:

            • 我也很确定 C 风格的外观在 Swift 3 中消失了
            猜你喜欢
            • 1970-01-01
            • 2015-01-25
            • 2019-12-09
            • 2014-08-23
            • 2015-10-21
            • 1970-01-01
            • 2015-11-26
            • 1970-01-01
            • 2014-11-07
            相关资源
            最近更新 更多