在 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 中重复字符串的主要内容,如果未能解决你的问题,请参考以下文章