Strings & String Interpolation
5.1 String basics
val s = "Hello, Scala"
s.length // 12
s.toUpperCase, s.toLowerCase
s.substring(0, 5) // "Hello"
s.split(", ") // Array("Hello", "Scala")
s.contains("Sca"), s.startsWith("He"), s.endsWith("la")
s.replace("Scala", "World")
s.trim, s.strip
s.indexOf('S'), s.charAt(0), s(0) // s(0) — apply method
s.reverse // via StringOps
s.capitalize
s.toList // List[Char]
s * 2 // "Hello, ScalaHello, Scala"
s.isEmpty, s.nonEmpty, s.isBlank
s.filter(_.isUpper) // "HS"
s.mkString("-") // characters joined
"a,b,c".split(",").toList5.2 Multi-line strings
val text = """Line one
|Line two
|Line three""".stripMargin5.3 Interpolation
Custom interpolators:
val name = "Ann"; val age = 30; val pi = 3.14159
s"Hello, $name! Next year you'll be ${age + 1}."
f"Pi is approximately $pi%.2f, name: $name%10s" // printf-style, type-checked
raw"No escapes: \n stays literal"extension (sc: StringContext)
def json(args: Any*): String = sc.s(args*).replace("'", "\"")
json"{'name': '$name'}" // {"name": "Ann"}5.4 StringBuilder
val sb = StringBuilder()
sb.append("a").append(1).append('c')
sb.toString // "a1c"