String
関数は、文字列全体の大文字への変換、文字列からの空白の削除など、文字列に対して様々な処理を実行します。
ユーザー関数 | 戻りデータ型 | 説明 |
---|---|---|
concat(String... arguments)
|
String
|
文字列引数のリストを1つの文字列に結合します。 |
concatWithToken(String joinToken, String... arguments)
|
String
|
結合トークンを使用して、文字列引数のリストを単一の文字列に結合します。 次に例を示します。
concatWithToken("|", "merlot", "cabernet", "malbec")次が返される: "merlot|cabernet|malbec" |
contains(String originalString, String substring)
|
Boolean
|
文字列に部分文字列を含むかどうかを決定します。 たとえば、contains("Boston", "Bos") はtrue を返します。
|
find(String originalString, String pattern)
|
String , null
|
文字列内の部分文字列または正規表現の最初のインスタンスを戻します。 一致が見つからない場合はnull を返します。
|
findAll(String originalString, String pattern)
|
String , null
|
文字列内にある正規表現(文字列書式)のすべてのオカレンスの(空の可能性がある)リストを返します。 |
indexOf(String originalString, String substring)
|
Integer
|
文字列内の部分文字列の索引を返します。 |
isDouble(String s)
|
Boolean
|
文字列がDouble であるかどうかを判断します。
|
isLong(String s)
|
Boolean
|
文字列がLong であるかどうかを判断します。
|
length(String s)
|
Integer
|
文字列の長さを返します。 |
replace(String attribute, String searchString, String replaceString, Boolean useRegex)
|
String
|
文字列内の部分文字列または正規表現のすべてのインスタンスを、新しいテキスト文字列に置換します。 useRegex 引数では、searchString がリテラル(false 、デフォルト)または正規表現(true )のいずれであるかを指定します。
|
splitToSet(String originalString, String delimiter)
|
String
|
指定した正規表現のデリミタ文字に基づいて元の文字列を分割します。 |
stripIndent(String s)
|
String
|
文字列から先頭のスペースを削除します。 |
substring(String s, Integer start, Integer end)
|
String
|
開始ポイントおよび終了ポイントに基づいて、元の文字列から部分文字列を戻します。 たとえば、substring("cabernet", 0, 3) はcab を戻します。
|
substring(String s, Integer start)
|
String
|
開始ポイントに基づいて、元の文字列から部分文字列を戻します。 返される部分文字列は、開始点から元の文字列の終了部分文字列になります。 たとえば、substring("cabernet", 5) はnet を戻します。
|
toLowerCase(String s, String locale)
|
String
|
文字列を小文字に変換します。 オプションで文字列ロケールを指定できます。このデフォルトは"en" です。
|
toTitleCase(String s, String locale)
|
String
|
文字列をタイトル・ケースに変換します。 たとえば、toTitleCase("sOMe STrING") は"Some String" を返します。 オプションで文字列ロケールを指定できます。このデフォルトは"en" です。
注意: 空白を含まないカンマ区切りの値のリストでは、リストの最初のアイテムのみがタイトルの大文字に変換されます。 たとえば、toTitleCase("apple,cherry,plum") は"Apple,cherry,plum" を戻します。
|
toUpperCase(String s, String locale)
|
String
|
文字列を大文字に変換します。 オプションで文字列ロケールを指定できます。このデフォルトは"en" です。
|
trim(String s)
|
String
|
文字列から先頭および末尾の空白を削除します。 |
urlDecode(String s, String characterEncoding)
|
String
|
特定のエンコード方式を使用して、文字列をapplication/x-www-form-urlencoded形式にデコードします。 オプションで、コード体系を指定できます。このデフォルトは"UTF-8" です。
|
urlEncode(String s, String characterEncoding)
|
String
|
特定のコード体系を使用して、文字列をapplication/x-www-form-urlencoded書式に変換します。 オプションで、コード体系を指定できます。このデフォルトは"UTF-8" です。
|
例20-11 正規表現での特殊文字のエスケープ
一部のString
関数(find
、findAll
、replace
、splitToSet
など)は、String
引数として正規表現(regex)を使用します。 一部の文字は、正規表現で特殊な意味を持ちます。 たとえば、ドット(.)は、改行を除く任意の文字と一致し、ドル記号($)は改行の終わりのアンカーであり、垂直のパイプ(|)では一連の選択肢が区切られます。
def attrs='aa|bb|cc|dd' splitToSet(attrs, "|")戻り値:
d,b,c,a|
def attrs='aa|bb|cc|dd' splitToSet(attrs, "\\|")戻り値:
dd,aa,bb,cc
def attrs='aa|bb|cc|dd' splitToSet(attrs, "[|]")戻り値:
dd,aa,bb,cc
例20-12 find
および正規表現を使用した文字列パターンの検索
find
関数の使用方法を示します。 amz_desc
属性があり、次の値があるとします:
The future is here people and it has arrived in the form of an LED digital bracelet watch. That's right. You'll never have to live the disappointing life of not owning a digital bracelet watch. This revolutionary piece of technology is not only stylish but it will completely change the way you read time.
find
関数および正規表現を含む次の変換コードを使用できます。 このスクリプトは、LEDで始まりhで終わる文字列パターンを特定します。その間には、0個以上の任意の文字(改行を除く)があります:
find(amz_desc,'LED.*h\\.')このスクリプトにより、次の結果が生成されます:
LED digital bracelet watch. That's right. You'll never have to live the disappointing life of not owning a digital bracelet watch.出力では、最初の文の一部がスクリプトに含まれていることがわかり、LEDで始まることから、スクリプトに含まれています。 次に、スクリプトは"h."の最後の出現を検索します。文字"h"の後に文の最後のピリオドが続きます。
スクリプトでは、2番目の"."をエスケープする必要があります。これは、スクリプトで2番目の"."を文の最後の正規表現として使用し、改行を除く任意の文字の正規表現としては使用しないためです。 通常、文字をエスケープするためには""を使用しますが、この場合、""は"\"を2回使用する必要があります。 これは、変換スクリプトでは文字通り"" (テキストとして)をGroovy言語に渡す必要があり、Groovy言語は."."ピリオドのエスケープ文字として処理するためです。
例20-13 replace
を使用した文字列の置換
replace(cost,'\\$','',false)
例20-14 trim
およびreplace
を使用したSubStringの置換
County
サフィクスをpickup_county
属性から削除します:
trim(replace(pickup_county,'County',''))
前述のコードでは、メソッド連鎖を使用して、複数のアクションを単一の文で実行します。replace
は、最初に属性pickup_county
で部分文字列County
を見つけ、それを空白の文字列(''
)で置換します。この場合、文字列(trim
はその結果からすべての先頭および末尾の空白を削除します。
例20-15 正規表現を使用したSubStringの置換
次のコードは、medallion
属性の数値を'X'
に置換してマスクします:
replace(medallion,'[0-9]','X',true)
replace
関数は、文字の範囲を定義する正規表現[0-9]
を使用して、medallion
属性内のすべての数字を検出します。 その後、このパターンに一致するすべての文字が文字列X
に置換されます。 true
引数では、リテラル文字列のかわりに正規表現を使用することを指定します。