Search K
Appearance
Appearance
Performs a variety of text manipulation operations on an input string and returns the result.
Use String Operations whenever a workflow needs to transform, inspect, or extract part of a text value. Common use cases include normalising casing before a comparison, extracting a file extension from a path, replacing placeholder tokens in a template, splitting a delimited string into an array, or trimming whitespace from user-supplied data.
| Field | Type | Required | Description |
|---|---|---|---|
| Input String | Text | Yes | The text value to operate on. |
| Operation | Dropdown | Yes | The operation to perform. See the Operations table below. |
| StartIndex | Text | No | Zero-based character position at which to begin extraction. Visible when Operation is Substring. |
| Length | Text | No | Number of characters to extract. Visible when Operation is Substring. |
| Value | Text | No | The substring to search for, test, or locate. Visible when Operation is Contains, StartsWith, EndsWith, IndexOf, or LastIndexOf. |
| OldValue | Text | No | The substring to find and replace. Visible when Operation is Replace. |
| NewValue | Text | No | The replacement text. Visible when Operation is Replace. |
| Separator | Text | No | Delimiter used to split the string or to join path segments. Visible when Operation is Split or GetPathToDepth. |
| Depth | Text | No | Number of path segments to keep from the start of the string. Visible when Operation is GetPathToDepth. |
| Pattern | Text | No | Regular expression pattern to match. Visible when Operation is RegexReplace or RegexMatch. |
| Group | Text | No | Capture group index to return (0 = full match, 1 = first group, etc.). Defaults to 1. Visible when Operation is RegexMatch. |
| Replacement | Text | No | Text to substitute for each regex match. Visible when Operation is RegexReplace. |
StartIndex and Length are visible when Operation is Substring. Value is visible when Operation is Contains, StartsWith, EndsWith, IndexOf, or LastIndexOf. OldValue and NewValue are visible when Operation is Replace. Separator is visible when Operation is Split or GetPathToDepth. Depth is visible when Operation is GetPathToDepth. Pattern is visible when Operation is RegexReplace or RegexMatch. Group is visible when Operation is RegexMatch. Replacement is visible when Operation is RegexReplace.
| Operation | Description |
|---|---|
| Substring | Extracts a portion of the string starting at StartIndex, optionally limited to Length characters. |
| Contains | Returns true if the string contains the specified Value. |
| StartsWith | Returns true if the string begins with the specified Value. |
| EndsWith | Returns true if the string ends with the specified Value. |
| IndexOf | Returns the zero-based index of the first occurrence of Value, or -1 if not found. |
| LastIndexOf | Returns the zero-based index of the last occurrence of Value, or -1 if not found. |
| ToUpper | Converts all characters to uppercase. |
| ToLower | Converts all characters to lowercase. |
| Trim | Removes leading and trailing whitespace. |
| TrimStart | Removes leading whitespace only. |
| TrimEnd | Removes trailing whitespace only. |
| Replace | Replaces every occurrence of OldValue with NewValue. |
| Split | Splits the string at each occurrence of Separator and returns an array of substrings. |
| Length | Returns the number of characters in the string. |
| RegexReplace | Replaces every substring matching Pattern with Replacement. |
| RegexMatch | Returns the value of a capture group from the first regex match. |
| GetPathToDepth | Splits the string by Separator and returns only the first Depth segments rejoined. |
| ResolveTemplate | Iteratively resolves {{}} placeholder tokens embedded in the input string. See ResolveTemplate below. |
| Name | Description |
|---|---|
| Result | The outcome of the operation. The type varies by operation: a string for most transformations, a boolean for Contains / StartsWith / EndsWith, an integer for IndexOf / LastIndexOf / Length, and a list of strings for Split. |
| Field | Value |
|---|---|
| Input String | report_final.pdf |
| Operation | LastIndexOf then Substring |
Alternatively use GetPathToDepth with a dot separator to isolate path components.
| Field | Value |
|---|---|
| Input String | alice,bob,carol |
| Operation | Split |
| Separator | , |
| Result | ["alice", "bob", "carol"] |
The ResolveTemplate operation solves a specific problem: when a variable's value is itself a template string containing {{}} placeholder tokens, those tokens are not automatically resolved. Normal placeholder resolution does a single pass — if the result still contains {{}} tokens, they are left as literal text.
ResolveTemplate takes the input string and iteratively resolves any remaining placeholder tokens against the current workflow data, repeating until no tokens remain or nothing changes (up to 10 passes). This makes it possible to programmatically build placeholder expressions and then resolve them to their final values.
Use ResolveTemplate when you need to:
Scenario: You have an Excel data source with columns like Email, Project Name, and Access Level. You also have a list of column names that you want to extract values for. Instead of hard-coding each column, you build the placeholder expressions dynamically.
Step 1 — Build the template string
Use a Loop over your list of column names (e.g. ["Email", "Project Name", "Access Level"]), and inside the loop use a Set Variables node to accumulate placeholder expressions:
| Field | Value |
|---|---|
| Accumulator | {{SetVariables.Accumulator}}{{ExcelData.LoopItem.{{ColumnLoop.LoopItem}}}} |
After the loop completes, Accumulator contains a string like:
{{ExcelData.LoopItem.Email}}{{ExcelData.LoopItem.Project Name}}{{ExcelData.LoopItem.Access Level}}
This is a raw template — the {{}} tokens are literal text, not yet resolved.
Step 2 — Resolve the template
Add a String Operations node with:
| Field | Value |
|---|---|
| Input String | {{SetVariables.Accumulator}} |
| Operation | ResolveTemplate |
The first pass resolves {{SetVariables.Accumulator}} to the template string. ResolveTemplate then performs additional passes to resolve each {{ExcelData.LoopItem.*}} token against the current row's data, producing the final output:
John.Smith@example.com | Sample Project | 18/06/2026 12:00:00 AM
If you need a delimiter between values, include it in the accumulator expression:
| Field | Value |
|---|---|
| Accumulator | {{SetVariables.Accumulator}}, {{ExcelData.LoopItem.{{ColumnLoop.LoopItem}}}} |
Then use a Trim or Substring operation after ResolveTemplate to remove the leading separator from the first value.
TIP
ResolveTemplate only resolves placeholder tokens that exist in the current workflow data. Any tokens that cannot be resolved are replaced with an empty string — the same behaviour as standard placeholder resolution.