プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Service Studioユーザー・ガイド

E65365-05
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

文字列関数

String関数は、文字列全体の大文字への変換、文字列からの空白の削除など、文字列に対して様々な処理を実行します。

この表は、「変換」でサポートされている文字列関数を示します。 「変換APIリファレンス」 (Groovydoc)では、同じ機能を説明しています。

ユーザー関数 戻りデータ型 説明
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関数(findfindAllreplacesplitToSetなど)は、String引数として正規表現(regex)を使用します。 一部の文字は、正規表現で特殊な意味を持ちます。 たとえば、ドット(.)は、改行を除く任意の文字と一致し、ドル記号($)は改行の終わりのアンカーであり、垂直のパイプ(|)では一連の選択肢が区切られます。

Groovy関数内の正規表現で特殊文字を使用する場合は、引数でそれをダブルクリックする必要があります。 たとえば、パイプ文字をエスケープしない場合は、次のようになります:
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引数では、リテラル文字列のかわりに正規表現を使用することを指定します。