

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 数式で文字列関数を使用する
<a name="expression-string-functions"></a>

[[transforms]](transforms.md) (変換) と[[metrics]](metrics.md) (メトリクス) では、次の関数を使用して文字列を操作することができます。詳細については、「[式で文字列を使用する](expression-tutorials.md#use-strings-in-formulas)」を参照してください。

**重要**  
<a name="formula-output-rules"></a>数式では、倍値または文字列値のみを出力できます。入れ子になった式は、文字列など他のデータ型を出力することができますが、式全体としては、数値または文字列として評価されなければなりません。[[jp function]](#jp-definition) (jp関数) を使うと、文字列を数値に変換することができます。ブール値は 1 (true) または 0 (false) でなければならない。詳細については、「[未定義の値、無限の値、およびオーバーフロー値](expression-tutorials.md#undefined-values)」を参照してください。


| 関数 | 説明 | 
| --- | --- | 
|  `len(s)`  |  文字列 `s` の長さをを返します。  | 
|  `find(s, substring)`  |  文字列 `substring` が文字列 `s` に含まれるインデックスを返す。  | 
|  `contains(s, substring)`  |  文字列 `1` が文字列 `s` を含んでいれば `substring`、それ以外の場合は `0` を返します。  | 
|  `upper(s)`  |  文字列 `s` を大文字で返す。  | 
|  `lower(s)`  |  文字列 `s` を小文字に変換して返す。  | 
|   `jp(s, json_path)`  |  文字列 `s` を[JsonPath](https://github.com/json-path/JsonPath) 式 `json_path` で評価し、その結果を返す。 この関数を使うと、次のことができます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/expression-string-functions.html) JSON 構造体から文字列値を取り出し、数値として返すには、複数の入れ子 `jp` 関数を使用する必要があります。外側の `jp` 関数は JSON 構造体から文字列を抽出し、内側の `jp` 関数はその文字列を数値に変換する。 文字列 `json_path` には、文字列リテラルを含める必要があります。つまり、`json_path` は文字列として評価される式ではありえないということです。 

**Example 例**  
+ `jp('{"status":"active","value":15}', '$.value')` は `15` を返します。
+ `jp('{"measurement":{"reading":25,"confidence":0.95}}', '$.measurement.reading')` は `25` を返します。
+ `jp('[2,8,23]', '$[2]')` は `23` を返します。
+ `jp('{"values":[3,6,7]}', '$.values[1]')` は `6` を返します。
+ `jp('111', '$')` は `111` を返します。
+ `jp(jp('{"measurement":{"reading":25,"confidence":"0.95"}}', '$.measurement.confidence'), '$')` は `0.95` を返します。  | 
|  `join(s0, s1, s2, s3, ...)`  |  文字列をデリミタ付きで連結して返す。この関数は、最初の入力文字列をデリミタとして使い、残りの入力文字列を結合する。これは、Javaの [join(CharSequence delimiter, CharSequence... elements)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-) 関数と同じような動作をします。 

**Example 例**  
+ `join("-", "aa", "bb", "cc")` は `aa-bb-cc` を返す  | 
|  `format(expression: "format")`、または `format("format", expression)`  |  指定された書式の文字列を返す。この関数は、`expression` を評価し、指定されたフォーマットで値を返す。これは、Javaの[format (String format, Object... args)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-)関数と同じような動作をします。サポートされるフォーマットの詳細については、*Java Platform, Standard Edition 7 API Specification*の[Class Formatter](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)の Conversions を参照してください。 

**Example 例**  
+ `format(100+1: "d")` は文字列 `101` を返す。
+ `format("The result is %d", 100+1)` は文字列 `The result is 101` を返す。  | 
|  `f'expression'`  |  連結された文字列を返す。この書式付き関数を使うと、簡単な式で文字列の連結や書式設定を行うことができます。これらの関数は、入れ子になった式を含むことができる。`{}` (中括弧) を使って、式を補間することができます。これは、Python の[[formatted string literals]](https://docs.python.org/3/reference/lexical_analysis.html#f-strings) (フォーマットされた文字列リテラル) と同じような動作をします。 

**Example 例**  
+ `f'abc{1+2: "f"}d'` は `abc3.000000d` を返します。この例の式を評価するには、次のようにします。

  1. `format(1+2: "f")` は浮動小数点数 `3.000000` を返します。

  1. `join('', "abc", 1+2, 'd')` は文字列 `abc3.000000d` を返す。

  また、次のように式を書くこともできます `join('', "abc", format(1+2: "f"), 'd')`。  | 