Groovy는 String을 표현할 때 " 와 ' 를 모두 사용합니다. 두 가지를 모두 허용하기 때문에 문자열 안에 따옴표를 쓰기가 쉬워집니다:

println "he said 'cheese' once"
println 'he said "cheese!" again'

Groovy 파서는 \uab12 (역슬래시 이후 u, 그리고 네 자리의 16진수) 표기법을 지원합니다. 이 표기는 자바에서와 마찬가지로 문자열 내에서 뿐만 아니라 소스 코드의 어떤 부분에 나와도 상관 없습니다.,

문자열 결합

문자열은 "+" 를 통해 결합될 수 있습니다. 다음 예제를 참고하세요:

#!/usr/bin/env groovy

a = "world"
print "hello " + a + "\n"

다중 라인 문자열

Groovy에서 보통 문자열은 여러 줄에 걸쳐서 쓰일 수 없습니다. 이 규칙에 대한 예외로써, 줄 마지막에 역슬래시가 나오면 그 줄은 무시되고 현재 라인과 그 다음 라인을 결합합니다:

// 이건 컴파일 에러
def foo = "hello

만약 텍스트 한 묶음(예를 들어 HTML 코드 블록)을 문자열로 사용하고 싶은데 모두 인코드하기는 싫다면 """ 문법을 쓰면 됩니다:

def name = "James"
def text = """\
hello there ${name}
how are you today?
"""

assert text != null
println(text)

두번째 줄 끝의 역슬래시로 인해 text}}에 담기는 문자열은 정확히 두 줄로 처리됩니다. 그리고 줄 바꿈은 호스트 시스템에 관계 없이 항상 {{'\n'' 으로 처리됩니다.

String 상수

특별한 문자를 처리하기 위해 역슬래시를 쓰지 않고도 문자열 상수를 표기할 수 있는 표기법이 있는데, 정규식을 표현할 때 특히 유용합니다:

def s = /.*foo.*/
def dirname  = /^.*\//
def basename = /[^\/]+$/

더 자세한 내용은 정규식 을 참고하세요.

GStrings

쌍따옴표(하나의 쌍따옴표 혹은 세 개의 쌍따옴표)로 선언된 문자열은 그 내부에 JSP EL, Velocity, Jexl 비슷하게 ${expression} 문법으로 표기된 표현식을 포함할 수 있습니다. 메서드 호출을 비롯한 모든 유효한 Groovy 표현식이 ${...} 표기법 안에 들어갈 수 있습니다.

실제로 일어나는 일은 다음과 같습니다. 문자열 표현식이 ${...} 을 포함하고 있으면 보통의 java.lang.String 인스턴스가 아닌 GString 인스턴스가 생성됩니다. GString 인스턴스는 문자열 자체와 그 문자열 내부에 포함된 수식에서 쓰이는 값을 보관하고 있습니다. GString은 지연된 평가(lazy evaluation)를 사용하기 때문에 toString()이 호출되기 전까지는 GString이 평가되지 않습니다. 이러한 지연된 평가는 로깅 등에서 특히 유용합니다.

GString의 또다른 활용예는

{link:GroovySql|sql.html}{link}
입니다. GroovySql 에서는 이 방식을 이용하여 인자를 SQL에 전달할 수 있습니다. GroovySql은 GString 내부의 표현식을 ?로 바꾸고 JDBC PreparedStatement를 이용하여 값들을 전달합니다.

만약 GString을 String으로 변환하려면 toString()을 호출하면 됩니다. Groovy는 필요한 경우 자동으로 GString을 String으로 바꿔주기도 합니다.