문자열

스칼라에서 문자열은 자바의 java.lang.String을 그대로 씁니다. 평소 이해한 특성을 그대로 기대해도 되고, 자바에서 쓰던 메서드 그대로 씁니다.

문자열 대체(replace)

java.lang.String에 있는 replace 메서드를 쓰는 예제입니다. 자바와 스칼라에서 똑같이 씁니다.

자바

"Hello, World!".replace("World", "Korea"); // => "Hello, Korea!"

스칼라

"Hello, World!".replace("World", "Korea") // => "Hello, Korea!"

세미콜론(;)이 없다는 점만 다르고 다 똑같습니다.

스칼라 문자열 리터럴(literal)

스칼라에는 큰따옴표("")로 문자열 값을 나타내는 방법 말고도 다른 표현법이 있습니다.

여러 줄 문자열

val multiline =
  """안녕하세요,
  여러 줄에 걸친
  문자열입니다.
  """

큰따옴표 세 개를 연달아 써서, 소스코드 여러 줄에 걸쳐 한 문자열을 표현할 수 있습니다. 개행문자(\n)나 공백문자도 그대로 표현됩니다.

val jsonString =
  """{
    |  "message": "안녕하세요",
    |  "status": 200
    |}""".stripMargin

여러 줄에 걸쳐 문자열을 표현할 때, 소스코드 들여쓰기와 문자열의 공백을 일치시켜 보기 편하게 하려는 목적으로, stripMargin 메서드를 쓰기도 합니다.

치환값을 포함하는 문자열

자바

String name = "홍길동";
final String str = String.format("안녕하세요, %s님!", name);
// => "안녕하세요, 홍길동님!"
final String sum = String.format("1 + 2 = %d", 1 + 2);
// => "1 + 2 = 3"

스칼라

val name = "홍길동"
val str = s"안녕하세요, ${name}님!"
// => "안녕하세요, 홍길동님!"
val sum = s"1 + 2 = ${1 + 2}"
// => "1 + 2 = 3"

s로 시작하는 큰따옴표로 묶은 문자열 안에는, 문맥 안에 있는 식(expression)을 ${}로 포함해 넣을 수 있습니다.