

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在公式表達式中使用字串函數
<a name="expression-string-functions"></a>

在[轉換](transforms.md)和[指標](metrics.md)中，您可以使用下列函數在字串上操作。如需詳細資訊，請參閱[在公式中使用字串](expression-tutorials.md#use-strings-in-formulas)。

**重要**  
<a name="formula-output-rules"></a>公式表達式只能輸出雙值或字串值。巢狀運算式可以輸出其他資料類型，例如字串，但整體公式必須評估為數字或字串。您可以使用 [jp 函數](#jp-definition)將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊，請參閱[未定義、無限和溢出值](expression-tutorials.md#undefined-values)。


| 函數 | Description | 
| --- | --- | 
|  `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/zh_tw/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... 元素）](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（字串格式、物件... args) ](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-)函數。如需支援格式的詳細資訊，請參閱 *Java 平台 Standard Edition 7 API 規格*中的[類別格式化器](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)下的轉換。 

**Example 範例**  
+ `format(100+1: "d")` 傳回字串 `101`。
+ `format("The result is %d", 100+1)` 傳回字串 `The result is 101`。  | 
|  `f'expression'`  |  傳回串連字串。使用此格式化函數，您可以使用簡單的表達式來串連和格式化字串。這些函數可能包含巢狀運算式。您可以使用 `{}`（大括號） 插入運算式。這的行為類似於 Python 中的[格式化字串常值](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')`。  | 