Skip to end of metadata
Go to start of metadata

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

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

문자열 결합

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

다중 라인 문자열

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

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

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

String 상수

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

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

GStrings

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

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

GString의 또다른 활용예는 GroovySql 입니다. GroovySql 에서는 이 방식을 이용하여 인자를 SQL에 전달할 수 있습니다. GroovySql은 GString 내부의 표현식을 ?로 바꾸고 JDBC PreparedStatement를 이용하여 값들을 전달합니다.

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

  • No labels