IBM FileNet P8, バージョン 5.2.1            

文字列関数

このセクションでは、文字列値に適用される関数について簡単に説明します。

表 1. 関数とその目的を示す表
関数 動作
convert 文字列を別のデータ型に変換する、または別のデータ型を文字列に変換します。
decode エンコードされた文字列式を元の文字列に戻します。
encode 文字列式を意味のないテキスト文字列に変換します。
hex 16 進文字コードを含む文字列リテラルを ASCII 文字列に変換します。
in_set ある文字列がすべて別の文字列の文字から構成されている場合、ブール値 true を返します。
is_number 文字列式が浮動小数点数値または整数値に評価される場合、ブール値 true を返します。
is_time 文字列式が有効な時間値に評価される場合、ブール値 true を返します。
len 文字列の長さを返します。

lower

upper

文字列の文字を小文字または大文字に変換します。

ltrim

rtrim

trim

文字列の先頭 (ltrim)、終わり (rtrim)、またはその両方 (trim)から空白または指定された文字を削除します。
max サポートされるデータ型の式のリストから最大値を返します。
min サポートされるデータ型の式のリストから最小値を返します。
numbertostring 指定されたマスクを使用して、浮動小数点数式または整数式を文字列式に変換します。
repeat ある文字列を指定された回数繰り返すことによって別の文字列を作成します。
strins ある文字列を別の文字列の指定された位置に挿入します。
strloc 文字列内の部分文字列の開始位置を返します。部分文字列が見つからない場合は、0 (ゼロ) を返します。
stringtotime 指定されたマスクを使用して、文字列式を時間式に変換します。
substitute 文字列内で、ある部分文字列を別の部分文字列に置き換えます。
substr 指定された開始位置と長さにしたがって部分文字列を返します。
timetostring 指定されたマスクを使用して、時間式を文字列式に変換します。
translate 文字列内の文字を置き換えます。
xmlencode XML フィールドを文字列式に変換します。
xmldecode 文字列式を XML に変換します。

hex

この関数は、16 進文字コードを含む文字列リテラルを ASCII 文字列に変換します。hex 関数では、どのような文字でも表すことができますが、通常は、タブなど、ASCII 表現を持たない文字に使用します。

2 桁の 16 進数が、結果として生成される文字列内の 1 文字を表します。文字列リテラルの 16 進文字の数が奇数であると、エラーが発生します。使用する構文は次のとおりです。
hex (hex_codes)
ここで、hex_codes は、1 文字または一連の文字に対する 16 進コードを含む文字列リテラルです。
次の例では、文字列 abc が返されます。61、62、63 は、これらの各文字の 16 進コードです。
hex ("616263")

translate

この関数は、ある文字列内の文字を指定された別の文字に置き換えることで新しい文字列を作成します。translate 関数は、文字をエンコードする場合に役立ちます。

使用する構文は次のとおりです。
translate (source_string, search_string,
replace_string)
ここで
表 2. translate 関数のパラメーターおよび説明
パラメーター 説明
source_string 置換対象の文字を含む文字列です。
search_string 置き換える source_string 内の文字の文字列です。replace_string と同じ長さでなければなりません。
replace_string 置換文字の文字列です。search_string と同じ長さでなければなりません。

検索と置換は文字ごとに行われます。検索文字列が「abc」で、置換文字列が「def」の場合は、新しく作成された文字列では、「a」が「d」に、「b」が「e」に、「c」が「f」に変換されます。

例えば、次の値が指定されたとします。
source_string contains "*123-#44-!999"
search_string contains "#*!-"
replace_string contains "XYZ&"
この場合は、次の新しい文字列が出力されます。
Y123&X44&Z999

ソース文字列、検索文字列、および置換文字列の内容は変更されないことに注意してください。

ヒント: 個々の文字ではなく、部分文字列全体を検索して置換するには、substitute 関数を使用します。
次の例では、translate 関数を使用して、文字列をヨーロッパの数字フォーマットからアメリカの数字フォーマットに変換します。
translate (str, ".,", ",.")

lower、upper

これらの関数は、文字列内のすべての文字を、それぞれ小文字または大文字に変換します。使用する構文は次のとおりです。
lower (string_exp)

upper (string_exp)
ここで、string_exp は、変換する文字列式です。

in_set

この関数は、2 つの文字列を比較し、1 つ目の文字列内のすべての文字が 2 つ目の文字列内のどこかに含まれる場合にブール値の true を返します。1 つ目の文字列に、2 つ目の文字列内にはない文字が 1 文字以上ある場合は、値 false を返します。文字は両方の文字列の同じ位置にある必要はありません。また、2 つ目の文字列に他の文字が含まれていても構いません。

使用する構文は次のとおりです。
in_set (subset_string, superset_string)
ここで
表 3. in_set 関数のパラメーターおよび説明
パラメーター 説明
subset_string サブセット文字のみを含む文字列式です。
superset_string subset_string と比較する文字列式です。
次の例で説明します。
in_set (name, "abcdefghijklmnopqrstuvwxyz")
この関数は、次の場合は true を返します。
name = "jim"
ただし、次の場合は false を返します。
name = "Fido"
or
name = "a.b"

len

この関数は、文字列式の (宣言された長さではなく) 実際の長さを計算します。式の中の文字 (スペースを含む) の合計数が提供されます。使用する構文は次のとおりです。
len (string_expr)
ここで、string_expr は長さを計算する文字列式です。
次の例では、長さ 15 が返されます。文字列を囲む引用符は文字としてカウントされないことに注意してください。
len ("Hamilton Burger")

repeat

この関数は、指定された文字列を指定された回数繰り返すことによって文字列を作成します。使用する構文は次のとおりです。
repeat (string_expr, repeat_num)
ここで
表 4. repeat 関数のパラメーターおよび説明
パラメーター 説明
string_expr 繰り返す文字列式です。
repeat_num string_exp を繰り返す回数です。
次の例では、文字列 string abcdabcdabcdabcdabcd が出力されます。
repeat ("abcd", 5)

strloc

部分文字列はソース文字列の一部です。ソース文字列の長さより短いか、等しくすることができます。例えば、GoodMornod MorniGood Morni は、すべて Good Morning の部分文字列です。

strloc 関数では、ソース文字列内で特定の部分文字列がどこにあるかを調べることができます。この関数は、ソース文字列内の部分文字列の開始文字位置を返します。

部分文字列がソース文字列内で複数見つかった場合は、1 つ目の発生個所の開始位置が返されます。部分文字列が見つからなかった場合、または部分文字列の長さがソース文字列よりも長い場合は、0 (ゼロ) が返されます。

使用する構文は次のとおりです。
strloc (source_string, sub_string)
ここで
表 5. strloc 関数のパラメーターおよび説明
パラメーター 説明
source_string 部分文字列の検索先の文字列です。
sub_string 検索する部分文字列です。
この例では、部分文字列の先頭はソース文字列の位置 6 なので、値 6 が返されます。
strloc ("Good Morning", "Morning")

substr

この関数は、ソース文字列から部分文字列を抽出して、新しい文字列を作成します。ソース文字列と、抽出を開始する文字位置を指定します。また、必要に応じて、抽出する文字数を指定できます。この情報が指定されない場合、抽出はソース文字列の終わりで停止します。

使用する構文は次のとおりです。
substr (source_string, start_pos {, length})
ここで
表 6. substr 関数のパラメーターおよび説明
パラメーター 説明
source_string ソース文字列です。
start_pos 抽出を開始する文字位置です。
length 抽出する文字数 (例えば、抽出する文字列の長さ) です。
次の例では、文字列 Morning が返されます。 文字列を囲む引用符は文字列の一部としてカウントされないことに注意してください。
substr ("Good Morning!", 6, 7)

この関数では、文字列の長さより 1 文字長い位置で、長さがゼロの文字列 (引用符の中に文字がない文字列) を抽出することもできます。この使い方は、長さがゼロの文字列を終端位置とみなすアルゴリズムに役立ちます。文字列の位置 1 から最後の文字 +1 の位置までの文字を抽出できます。位置 1 と文字列の長さ +1 の位置が終端位置です。

次の場合は、ランタイム・エラーが発生します。

  • 開始位置が 1 より小さいか、ソース文字列の長さ + 1 より大きい場合。
  • 指定された長さによって、ソース文字列内の残りの文字数より長い部分文字列が生成される場合 (すなわち、start_pos + length > len (source_string) + 1 の場合)。

strins

この関数は、ある文字列を別の文字列に挿入することで、新しい文字列を作成します。ソース文字列と挿入文字列の値は変更されません。使用する構文は次のとおりです。
strins (source_string, insert_string, start_pos)
ここで
表 7. strins 関数のパラメーターおよび説明
パラメーター 説明
source_string insert_string と組み合わせて新しい文字列を生成する文字列です。
insert_string source_string と組み合わせて新しい文字列を生成する文字列です。
start_pos

挿入を開始する source_string 内の位置です。値の範囲は 1 から source_string + 1 の位置までです。

1 より小さい値または source_string + 1 より大きい値を指定すると、ランタイム・エラーが発生します。

次の例では、以下の文字列と
insert_str = "Mr. Jones,"
以下の文字列を指定します。
source_str = "Good morning, what a lovely day."
strins (source_str, insert_str, 15)
前述の指定された値を組み合わせることで、次の文字列が返されます。
Good morning, Mr. Jones, what a lovely day.

substitute

この関数は、ソース文字列内の部分文字列を別の部分文字列に置き換えることで新しい文字列を作成します。使用する構文は次のとおりです。
substitute (source_string, unwanted_string,
replacement_string)
ここで
表 8. substitute 関数のパラメーターおよび説明
パラメーター 説明
source_string unwanted_string を含む文字列です。
unwanted_string source_string の部分文字列です。
replacement_string 新しい文字列を作成するために unwanted_string と置き換える文字列です。
次の例では、TestString 内に出現する abc がすべて wxyz に置き換えられます。置換は左から右に行われます。
substitute (TestString, "abc", "wxyz")
以下の値を指定するとします。
TestString = "abcdabcd"
この場合、この関数は以下の新規文字列を返します。
wxyzdwxyzd
ソース文字列、不要な文字列、および置換文字列の内容は変更されないことに注意してください。
ヒント: 部分文字列ではなく個々の文字を検索して置換するには、translate 関数を使用します。

ltrim、rtrim、trim

これらの関数は、既存のソース文字列をコピーして、新しい文字列の先頭 (ltrim)、終わり (rtrim)、またはその両方 (trim) から空白または指定された文字を削除することで、新しい文字列を作成します。いずれの場合も、ソース文字列は変更されません。

3 つの関数で使用する構文は次のとおりです。
ltrim (string_expr{, trim_char}opt)

rtrim (string_expr{, trim_char}opt)

trim (string_expr{, trim_char}opt)
ここで
表 9. trim 関数、ltrim 関数、および rtrim 関数のパラメーターおよび説明
パラメーター 説明
string_expr コピーするソース文字列式です。
trim_char

新しい文字列から削除する文字を指定するオプション・パラメーターです。このパラメーターが指定されないと、空白が削除されます。

関数に応じて、削除は新しい文字列の先頭、終わり、またはその両方のいずれかから開始され、trim_char で指定された文字以外の文字 (または非ブランク文字) が見つかるまで続きます。

次の例では、LastName からすべての先行ブランクが削除されます。この例で、以下の値を指定するとします。
LastName = "Smith"
この場合、以下の新規文字列が返されます。
"Smith"
ltrim (LastName)
次の例では、Status という文字列の末尾から「&」文字が削除されます。以下の値を指定するとします。
Status = "OpenXY&Z&&&&"
この場合、以下の新規文字列が返されます。
"OpenXY&Z"
rtrim (Status, "&")
次の例では、AccountName から末尾のすべての数字が削除されます。
rtrim (AccountName, "0123456789")

is_number

この関数は、指定された文字列式が浮動小数点数値または整数値に評価されるかどうかを判別します。is_number 関数は (部分文字列だけではなく) 文字列全体が浮動小数点数値または整数値に評価される場合はブール値 true を返し、それ以外の場合は false を返します。

使用する構文は次のとおりです。
is_number (expr)
ここで、expr は文字列式です。
次の 3 つの例では、それぞれ true、false、および false が返されます。
is_number ("123.4")

is_number ("no")

is_number ("abc63j")

is_time

この関数は、指定された文字列式が指定されたフォーマットの時間値に評価されるかどうかを判別します。is_time 関数は (部分文字列だけではなく) 文字列全体が指定されたフォーマットの時間値に評価される場合はブール値 true を返し、それ以外の場合は値 false を返します。

使用する構文は次のとおりです。
is_time (str_expr, date_time_mask)
ここで
表 10. is_time 関数のパラメーターおよび説明
パラメーター 説明
str_expr 文字列式です。
date_time_mask フォーマットを指定する日付時間マスク。str_expr がこのフォーマットを使用していると、is_time は値 true を返します。
次の 1 つ目の例では false が返され、2 つ目の例では true が返されます。どちらの例でも、is_time 関数を評価できるように convert 関数を使用して文字列式を時間データ型に変換しています。
is_time ("nov121995", "mm/dd/yyyy")

is_time ("11/12/1995", "mm/dd/yyyy")

timetostring

この関数は、指定されたフォーマットを使用して、時間式を文字列式に変換します。使用する構文は次のとおりです。
timetostring (time_expr, date_time_mask)
ここで
表 11. timetostring 関数のパラメーターおよび説明
パラメーター 説明
time_expr 時間型の式です。
date_time_mask timetostring 関数の出力のフォーマットを指定する日付時間マスクです。
次の例では、システム時間を文字列に変換します。文字列は、指定された日付時間マスクを使用してフォーマットされます。
timetostring (systemtime(), "mm/dd/yyyy hh:tt:ss am")
前述の例で、systemtime() が 1985 年 6 月 1 日午後 12 時 45 分 6 秒に等しい場合、文字列出力は次のようになります。
7/1/1985 12:45:06 pm

systemtime() 関数」の詳細を参照してください。

stringtotime

この関数は、指定されたフォーマットを使用して、文字列を時間に変換します。使用する構文は次のとおりです。
stringtotime (string_expr, date_time_mask)
ここで
表 12. stringtotime 関数のパラメーターおよび説明
パラメーター 説明
string_expr 文字列型の式です。
date_time_mask 変換に使用する時刻フォーマットを指定する日付時間マスクです。
次の例で、HostTime は文字列変数です。
stringtotime (HostTime, "mon. dd, yyyy hh:tt:ss am")
以下の値を指定するとします。
HostTime = "Jul. 1, 1985 12:45:06 pm"
この場合、結果として生成される出力は、1985 年 7 月 1 日午後 12 時 45 分 6 秒に等しい時間値になります。

encode、decode

これらの関数は、内容を隠す目的で文字列を意味のない文字列に変換します。encode と decode の両方は同じワークフロー内になければなりません。

decode 関数を使用して、複数のエンコードされた文字列を含む文字列式を変換できます。
encode (string_expr)

decode (string_expr)
ここで
表 13. decode 関数と encode 関数のパラメーターおよび説明
パラメーター 説明
string_expr 文字列型の式です。文字列はリテラルにできません。


最終更新日: 2016 年 3 月
bpfe012.htm

© Copyright IBM Corp. 2016.