groovy
문자열과 GString 리터럴
수색…
통사론
- '작은 따옴표 붙은 문자열'
- "큰 따옴표 붙은 문자열"
- '' '여러 줄' ''
- "" "큰 따옴표로 묶은 문자열" ""
- / 슬픈 문자열 /
- $ / 달러 슬래시 문자열 / $
비고
Groovy는 java java.lang.String
과 groovy.lang.GString
의 두 문자열 유형과 여러 형태의 문자열 리터럴을 가지고 있습니다 (구문과 예제 참조).
두 가지 유형의 문자열 간의 주요 차이점은 GString이 문자열 보간을 지원한다는 것입니다.
작은 따옴표 붙은 문자열
def str = 'Single quoted string'
assert str instanceof String
큰 따옴표 붙은 문자열 (보간 자리 표시 자 없음)
def str = "Double quoted string"
assert str instanceof String
큰 따옴표 붙은 문자열 (보간법)
def param = 'string'
def str = "Double quoted ${param}"
assert str instanceof GString
assert str == 'Double quoted string'
매개 변수는 기본적으로 열심히 해결됩니다. 즉 다음과 같습니다.
def param = 'string'
def str = "Double quoted ${param}"
param = 'another string'
assert str == 'Double quoted string'
문자열이 사용될 때마다 지연 매개 변수를로드하려면 다음을 수행하십시오.
def param = 'string'
def str = "Double quoted ${ -> param}"
assert str == 'Double quoted string'
param = 'lazy load'
assert str == 'Double quoted lazy load'
여러 줄
def str = '''multiline
string'''
assert str instanceof String
다중 행 (여분의 후행 줄 바꿈)
def str = '''
multiline
string'''
assert str.readLines().size() == 3
여러 줄 문자열 (줄 바꿈 줄 바꿈없이)
def str = '''\
multiline
string'''
assert str.readLines().size() == 2
트리플 겹침 문자열
def param = 'string'
def str = """
multiline
$param
"""
assert str instanceof GString
assert str.readLines().size() == 3
assert str == '''
multiline
string
'''
얇은 문자열 (보간 자리 표시 자 없음)
def str = /
multiline string
no need to escape slash
\n
/
assert str instanceof String
assert str.readLines().size() == 4
assert str.contains('\\n')
얇은 문자열 (보간법)
def param = 'string'
def str = /
multiline $param
no need to escape slash
\n
/
assert str instanceof GString
assert str.readLines().size() == 4
assert str.contains('\\n')
assert str.contains('string')
달러 슬래시 문자열
def param = 'string'
def str = $/
multiline $param
no need to escape slash
\n
$
$$
/$
assert str instanceof GString
assert str.readLines().size() == 6
assert str.contains('\\n')
assert str.contains('$')
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow