Skip to content

String Operations ​

Performs a variety of text manipulation operations on an input string and returns the result.

Purpose ​

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.

Inputs ​

FieldTypeRequiredDescription
Input StringTextYesThe text value to operate on.
OperationDropdownYesThe operation to perform. See the Operations table below.
StartIndexTextNoZero-based character position at which to begin extraction. Visible when Operation is Substring.
LengthTextNoNumber of characters to extract. Visible when Operation is Substring.
ValueTextNoThe substring to search for, test, or locate. Visible when Operation is Contains, StartsWith, EndsWith, IndexOf, or LastIndexOf.
OldValueTextNoThe substring to find and replace. Visible when Operation is Replace.
NewValueTextNoThe replacement text. Visible when Operation is Replace.
SeparatorTextNoDelimiter used to split the string or to join path segments. Visible when Operation is Split or GetPathToDepth.
DepthTextNoNumber of path segments to keep from the start of the string. Visible when Operation is GetPathToDepth.
PatternTextNoRegular expression pattern to match. Visible when Operation is RegexReplace or RegexMatch.
GroupTextNoCapture group index to return (0 = full match, 1 = first group, etc.). Defaults to 1. Visible when Operation is RegexMatch.
ReplacementTextNoText to substitute for each regex match. Visible when Operation is RegexReplace.

Visibility Rules ​

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.

Operations ​

OperationDescription
SubstringExtracts a portion of the string starting at StartIndex, optionally limited to Length characters.
ContainsReturns true if the string contains the specified Value.
StartsWithReturns true if the string begins with the specified Value.
EndsWithReturns true if the string ends with the specified Value.
IndexOfReturns the zero-based index of the first occurrence of Value, or -1 if not found.
LastIndexOfReturns the zero-based index of the last occurrence of Value, or -1 if not found.
ToUpperConverts all characters to uppercase.
ToLowerConverts all characters to lowercase.
TrimRemoves leading and trailing whitespace.
TrimStartRemoves leading whitespace only.
TrimEndRemoves trailing whitespace only.
ReplaceReplaces every occurrence of OldValue with NewValue.
SplitSplits the string at each occurrence of Separator and returns an array of substrings.
LengthReturns the number of characters in the string.
RegexReplaceReplaces every substring matching Pattern with Replacement.
RegexMatchReturns the value of a capture group from the first regex match.
GetPathToDepthSplits the string by Separator and returns only the first Depth segments rejoined.
ResolveTemplateIteratively resolves {{}} placeholder tokens embedded in the input string. See ResolveTemplate below.

Outputs ​

NameDescription
ResultThe 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.

Examples ​

Extract a file extension
FieldValue
Input Stringreport_final.pdf
OperationLastIndexOf then Substring

Alternatively use GetPathToDepth with a dot separator to isolate path components.

Split a comma-separated list
FieldValue
Input Stringalice,bob,carol
OperationSplit
Separator,
Result["alice", "bob", "carol"]

ResolveTemplate ​

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.

When to use it ​

Use ResolveTemplate when you need to:

  • Build a dynamic placeholder expression at runtime and then resolve it
  • Accumulate placeholder tokens across loop iterations and resolve them all at once
  • Compose variable references where one variable's value contains references to other variables

Example — Resolve dynamically built column references ​

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:

FieldValue
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:

FieldValue
Input String{{SetVariables.Accumulator}}
OperationResolveTemplate

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

Example — Concatenate values with a separator ​

If you need a delimiter between values, include it in the accumulator expression:

FieldValue
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.

Tentech