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引数では、リテラル文字列のかわりに正規表現を使用することを指定します。