在 Swift 中重复字符串

Posted

技术标签:

【中文标题】在 Swift 中重复字符串【英文标题】:Repeating String in 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

【问题讨论】:

【参考方案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 练习的人一巴掌。 @NicLaughter 试试iswift.org/playground 或swiftlang.ng.bluemix.net/#/repl【参考方案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 中消失了

以上是关于在 Swift 中重复字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 4 中使用字符串下标 [重复]

如何在 Swift 4 中替换整个字符串或部分字符串 [重复]

在 Swift 中删除字符串中的链接的正则表达式 [重复]

在 Swift 中将字符串转换为日期 [重复]

如何检查字符串是不是已包含 Swift 中的字符 [重复]

如何在 Swift 中使用区分大小写和不区分大小写的混合字符串避免 Array 中的重复条目?