在Scala中有效地重复一次字符/字符串n次

时间:2015-07-26 12:46:18

标签: string scala char concatenation string-concatenation

我想更有效地执行以下操作:

def repeatChar(char:Char, n: Int) = List.fill(n)(char).mkString
def repeatString(char:String, n: Int) = List.fill(n)(char).mkString

repeatChar('a',3)     // res0: String = aaa
repeatString("abc",3) // res0: String = abcabcabc

2 个答案:

答案 0 :(得分:97)

对于字符串,您只需撰写"abc" * 3即可通过StringOps投放,并在幕后使用StringBuffer

对于角色,我认为你的解决方案非常合理,尽管char.toString * n可以说更清晰。您是否有理由怀疑List.fill版本不足以满足您的需求?您可以编写自己的方法,使用StringBuffer(类似于*上的StringOps),但我建议首先明确目标,然后在有具体证据时担心效率问题这是你程序中的一个问题。

答案 1 :(得分:0)

你可以简单地定义:

def repeatChar(char:Char, n: Int) = char.toString().repeat(n)
def repeatString(char:String, n: Int) = char.repeat(n)