公開日: 04/01/2021

文字関数

文字を引数にとったり、文字列を戻したり、値のデータタイプを数値から文字に変換したり、もしくは、文字から数値に変換したりする計算式を作成できます。これらの計算式を作成する場合は、次の点に注意してください。

以下で説明する文字関数のいくつかは、文字列ではなく、数値を戻します。戻り値の種類が、列で現在、使われているデータタイプと異なる場合は、列のデータタイプが戻り値に合わせて自動的に変更されます。

文字列引数は、必ず引用符で囲んでください。

構文の詳細については、『スクリプトガイド』の文字関数を参照してください。

Char

数値引数を文字列に変換します。たとえば、Char(1.123)は"1.123"となります。『スクリプトガイド』の数および文字列章を参照してください。

Collapse Whitespace

先頭および末尾の空白文字を削除し、空白文字が連続している部分は重複を削除します。つまり、2つ以上の連続した空白文字が挿入されている場合、Collapse Whitespaceコマンドによって空白文字が1つになります。

Concat ||

第1文字引数に第2文字引数を連結して、新しい文字列を戻します。たとえば、 "Dr." || " " || name は、Dr.という敬称の後にスペースとnameの中身が続く新しい文字列を作成します

Contains

第1引数の中に第2引数の文字列が含まれている場合、最初に検索の文字列が見つかった位置を数値で戻します。第2引数は1文字でも複数の文字でもかまいません。第2引数の文字列が含まれていない場合、Containsはゼロを戻します。たとえば、Contains("Veronica Layman", "ay")は11を戻します。Contains("Lillie Layman", "L")1を戻します。3つ目の引数はオプションで、検索の開始位置を示す数値です。オフセットが負の値の場合、Containsは、文字列の最後からオフセットを差し引いた位置から、前へ向かって検索します。

Munger

文字列を挿入または削除することによって、既存の文字列から新しい文字列を生成します。また、引数の指定方法によって、文字列の一部を取り出したり、文字列の位置を戻したりするなどの処理も行えます。Munger関数は、大文字と小文字を区別して処理します。

textは文字式です。Mungerは、他の3つの引数をこの文字列に適用して結果を求めます。

offsetは、文字列を検索する開始位置を示す数値の引数です。offsetよりも前に位置する文字列は、たとえマッチしていても無視されます。

find/lengthは、文字列または数値の引数です。この引数が文字列の場合は、検索の基準に使われます。また、引数が正の整数である場合は、offsetの位置から始まる、指定された文字数の文字列を戻します。引数が負の整数である場合、Munger関数はoffsetから文字列の最後までのすべての文字を戻します。

replace値は、オプションの引数です。何も指定しないか、文字列を指定してください。find/lengthが数値で、かつ、置換値が文字列の場合は、Munger関数は、offsetからoffset+lengthまでの文字列を、replace値の文字列と置き換えます。find/lengthが数値で、かつ、置換値が指定されていない場合は、Munger関数は、offsetからoffset+lengthまでの文字列を抽出します。find/length値が文字列で、replace値を指定しない場合は、Mungerは(offsetよりも後ろで)最初にfindの文字列が見つかった位置を戻します。replace値の引数を挿入するには、Munger関数のいずれかの引数をクリックしてから挿入ボタンをクリックします。replace値の引数を削除するには、キーボードのDeleteキーを押すか、計算式エディタのキーパッドにある削除ボタン(Image shown here)をクリックします。

Lowercase、Uppercase

Lowercase関数は、引数に含まれる大文字をすべて小文字に変換します。たとえば、Lowercase("VERONICA LAYMAN")はveronica laymanとなります。Uppercase関数は、引数に含まれる小文字をすべて大文字に変換します。たとえば、Uppercase("Veronica Layman")はVERONICA LAYMANとなります。

Length

引数の長さを戻します。たとえば、Length("Veronica")は8を戻します。

引数が文字列の場合、文字数をLength関数は戻します。

引数がリストの場合、リスト内にある項目の個数をLength関数は戻します。

引数がblob(バイナリオブジェクト)の場合、バイト数をLength関数は戻します。

Num

文字列が数字だけから成っている場合、その文字列を数値に変換します。文字列が数値以外の値の場合、結果は欠測値となります。たとえば、Num(“1.123”)は1.123となります。

Substr

第2引数によって与えられた位置から、第3引数で指定された文字数まで、第1引数内の文字を抽出します。第1引数は、文字タイプの列でも文字列定数でもかまいません。開始の引数および長さの引数は数を算出する式でもかまいません。たとえば、姓名の姓だけを表示させる場合、Substr("Veronica Layman", 10, 6)は10文字目から15文字目までを抜き出し、Laymanとなります。

startが負の値の場合、Substrは、文字列の最後からstartを差し引いた位置から検索します。lengthが負の値または指定されていない場合、Substrstartから末尾までのテキスト文字列を戻します。

Substrはリストも扱えます。

Titlecase

単語の最初の文字を大文字にし、あとの文字を小文字にします。たとえば、Titlecase(“Veronica layman”)は、Veronica Laymanを戻します。

Trim

引数から先頭および末尾の空白をとって新しい文字列を作成します。第2引数で、空白文字をleft(左)、right(右)、またはboth(両方)のどちら側から削除するかを指定します。第2引数を指定しない場合、両方から空白スペースが削除されます。たとえば、Trim("john ")johnとなります。Trim(" john ", both)johnとなります。

Word

文字列から第n番目の語を抽出します。オプションでdelimiters引数が指定されていない場合、1つまたは複数のスペースが各単語の区切りとなります。たとえば、Word(2, "Veronica Layman")Laymanを戻します。

区切り文字引数を挿入するには、Word関数のいずれかの引数をクリックしてから計算式エディタのキーパッドの挿入ボタン(Image shown here)をクリックします。delimiters引数を削除するには、キーボードのDeleteキーを押すか、計算式エディタのキーパッドにある削除ボタン(Image shown here)をクリックします。区切り文字を指定しない場合は、スペースが区切り文字として使われます。区切り文字に空の文字列を指定した場合、各文字が別々の語とみなされます。

特殊文字のほとんどは単一の区切り文字として機能します。どのような文字でも、また複数の文字でも区切り文字として指定できます。たとえば、次の例で姓だけを抽出するには、区切り文字としてカンマと空白を一緒にすると、一語目の単語が抽出されます。Word(1, "Layman, Veronica", ", ")Laymanを戻します。

Words

オプションの第2引数にリストされた文字で、テキストを区切って、各文字列を抽出します。デフォルトの区切り文字はスペースです。たとえば、Words("the quick brown fox")は、{"the","quick","brown","fox"}を戻します。

第2引数を指定した場合、その引数内のいずれかの文字が区切り文字として扱われます。たとえば、Words("Doe, Jane P.",", .")は、{"Doe","Jane","P"}を戻します。

区切り文字引数を挿入するには、Word関数のいずれかの引数をクリックしてから計算式エディタのキーパッドの挿入ボタン(Image shown here)をクリックします。delimiters引数を削除するには、キーボードのDeleteキーを押すか、計算式エディタのキーパッドにある削除ボタン(Image shown here)をクリックします。区切り文字を指定しない場合は、スペースが区切り文字として使われます。区切り文字に空の文字列を指定した場合、各文字が別々の語とみなされます。

Left、Right

文字列テキストの、左端(Left)もしくは右端(Right)からn個の文字を戻します。両関数とも、リストを扱えます。

Starts With、Ends With

これらの関数は、それぞれ、第1引数で指定された文字列が、第2引数の文字列で始まっている、および、終わっている場合、1を戻します。そうでなければ0を戻します。両関数とも、リストを扱えます。

Item

Item関数は、区切り文字の取り扱い方がWord関数と異なります。Word関数は、区切り文字がいくつか連続しているときは1つの区切り文字として処理します。一方、Item関数は、各区切り文字を別々の区切りとみなして単語の位置を定義します。比較のため、ある名前が姓、名の順だとしましょう。区切り文字はカンマ、およびそれに続く空白です。

Item(2, "Layman, Veronica", ", ")

Word(2, "Layman, Veronica", ", ")

Item関数は、カンマと空白を別々とみなし、それらの間には何もないので欠測値を戻します。Word関数は、カンマと空白を合わせて単一の区切り文字とみなすので、Veronicaを2番目の単語と判断します。

区切り文字を指定しない場合は、スペースが区切り文字として使われます。区切り文字に空の文字列を指定した場合、各文字が別々の語とみなされます。

Hex、Hex to Number

これらの関数は、引数を16進コードに変換したり、数値を16進コードに変換したりします。

Hex関数は、引数を16進コードに変換します。引数が(引用符に囲まれた)シングルバイト文字の場合、その文字値の16進コードを含んだ、2倍の長さの文字列を戻します。たとえば、Hex("A")は、文字列"41"を戻します。

引数が整数で、“integer”が指定されている場合、Hex関数は、その整数の16進コードを表す文字列を8桁で戻します。たとえば、Hex(12, “integer”)は文字列“0000000C”を戻します。

Hex to Number関数は、16進コードを数値に変換します。

『スクリプトガイド』の16進数の関数とBLOB関数章を参照してください。

Repeat

第1引数を第2引数で指定した回数だけ繰り返した文字列を作成します。第1引数には、文字列定数、文字変数、または文字式を使用します。たとえば、Repeat(“Katie”, 3)KatieKatieKatieになります。

なお、JSLスクリプトにおいて、Repeat関数で、行列を繰り返す場合は、第3引数も指定できます。第1引数が行列の場合には、第2引数が行の繰り返し回数で、第3引数が列の繰り返し回数です。

Insert

Insertは、文字列内の与えられた位置に新しい文字列を挿入します。位置を指定しない場合、文字列は末尾に挿入されます。

Reverse

Reverseは、文字列内の文字の順序を逆にします。

Substitute

第1引数は文字列、第2引数はパターン、第3引数は置換文字列です。Substituteは、文字列内のパターンにマッチするものをすべて見つけ、それらを置換文字列に置き換えます。

Regex

第1引数はソース文字列で、Regexはこのソース文字列からパターンにマッチするものを検索します。第2引数は正規表現の形式のパターンです。これら2つの引数は必須です。

ヒント: 正規表現による指定方法の詳細は、インターネットで「regular expression tutorial」を検索してください。

デフォルトでは、Regexは大文字と小文字を区別して検索を実行し、指定したパターンにマッチするソース文字列の一部を戻します(または、マッチするものがない場合は、欠測値を戻します)。オプションとして追加できる引数は2つです。第3引数として、戻される文字列の形式を指定できます。正規表現を使って、戻される文字列内で置換する文字を指定することもできます。第3引数に続けてIGNORECASEを指定して、ソース文字列のマッチを検索する際に大文字と小文字を区別しないように指定できます。

表A.1 Regexの例

Regex関数の例

戻される文字列

Regex( "@ q3 #", "([a-z])([0-9])" )

q3

Regex関数は大文字と小文字を区別するため、q3はマッチしますが、Q3はマッチしません。

Regex( "@ Q3 #", "([a-z])([0-9])", "\0",IGNORECASE)

Q3

\0 はデフォルトの引数ですが、この例ではIGNORECASEを指定するために必要です。

Regex( "@ Q3 #", "([a-z])([0-9])", "\2\1",IGNORECASE)

3Q

詳細と例については、[ヘルプ]>[スクリプトの索引]を選び、関数の索引でRegexを検索してください。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).