groovy
Строки и литералы GString
Поиск…
Синтаксис
- 'Single quoted string'
- "Двойная кавычка"
- '' 'Многострочная строка' ''
- "" "Тройная двойная кавычка" ""
- / Slashy string /
- $ / Долларовая черта / $
замечания
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
'''
Slashy string (без интерполяционного заполнителя)
def str = /
multiline string
no need to escape slash
\n
/
assert str instanceof String
assert str.readLines().size() == 4
assert str.contains('\\n')
Slashy string (интерполяция)
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