groovy
文字列とGStringリテラル
サーチ…
構文
- 'シングルクォート文字列'
- "二重引用符で囲まれた文字列"
- '' '複数行の文字列' ''
- "" "二重引用符で囲まれた文字列" ""
- /スラッシュな文字列/
- $ /ドルスラッシュ文字列/ $
備考
Groovyには、java java.lang.String
とgroovy.lang.GString
2つの文字列型と、複数の形式の文字列リテラルがあります(構文と例を参照)。
2種類の文字列の主な違いは、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'
文字列が使用されるたびにlazilyパラメータをロードするには、これを行うことができます:
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