string - 围绕 Scala 字符串

标签 string scala immutability stringbuilder string-concatenation

如果您在单个语句中执行某些操作,例如“abc”+ stringval +“abc”,那么是一个不可变的字符串副本,还是两个(注意 abc 和 123 在编译时是常量)

奖励回合:使用像下面这样的 StringBuilder 会产生更多还是更少的开销?

  def surround(s:String, ss:String):String = {
    val surrounded = new StringBuilder(s.length() + 2*ss.length(), s)
    surrounded.insert(0,ss)
    surrounded.append(ss)
    surrounded.mkString
  }

或者是否有我不知道的更惯用的方式?

最佳答案

它的开销比连接少。但是您示例中的插入效率不高。以下内容更简洁一些,仅使用追加来提高效率。

def surround(s:String, ss:String) =
  new StringBuilder(s.length() + 2*ss.length(), ss).append(s).append(ss).mkString

关于string - 围绕 Scala 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8352764/

相关文章:

java - 如何从字符串中找出出现次数最多的数字?

android - Eclipse、Android、Scala 变得简单但仍然无法正常工作

scala - 如何使用系统属性替换 Typesafe Config 文件中的占位符?

c# - 使用 AutoFixture 实例化 [immutable] 对象时指定 [readonly] 属性值 [via ctor args]

javascript - 有什么方法可以防止替换 JavaScript 对象属性?

c# - string.ToLower() 和 string.ToLowerInvariant()

asp.net - ASP.NET 客户端将单个字符串值(在代码中定义)传递给服务器的绝对最简单的方法是什么?

scala - 向 Spark-jobserver 提交 fat jar 时超时(akka.pattern.AskTimeoutException)

cassandra - Cassandra 在压实过程中会做什么?

c# - 从非常大的文本文件中删除重复的字符串