Text Functions

Functions for formatting text values. These are commonly used in the labeling and popup profiles.


Concatenate

Concatenate(values, separator?, format?) -> Text

Concatenates values together and returns a text value.

Parameters

  • values: Array<Text> - An array of text values to concatenate.
  • separator (Optional): Text - Separator to use for concatenation if values parameter is an array. Or text to concatenate, if a single value is provided for the first parameter. If not provided will be empty.
  • format (Optional): Text - Formatting text for dates or numbers. This parameter is available in Arcade version 1.3 and later.

Possible values:

  • 0: Digit
  • #: Digit, omitting leading/trailing zeros
  • D: Day of the month, not padded (1 - 31)
  • DD: Day of the month, padded (01 - 31)
  • DDD: Ordinal day of the year (1 - 365)
  • d: Day of the week (1 - 7)
  • ddd: Abbreviated day of the week (e.g. Mon)
  • dddd: Full day of the week (e.g. Monday)
  • M: Month number (1 - 12)
  • MM: Month number, padded (01 - 12)
  • MMM: Abbreviated month name (e.g. Jan)
  • MMMM: Full month name (e.g. January)
  • m: Minutes, not padded (0 - 59)
  • mm: Minutes, padded (00 - 59)
  • Y: Full year
  • YY: Two-digit year
  • h: Civilian hours, not padded (0 - 12)
  • hh: Civilian hours, padded (00 - 12)
  • H: Military hours, not padded (0 - 24)
  • HH: Military hours, padded (00 - 24)
  • s: Seconds, not padded (0 - 59)
  • ss: Seconds, padded (00 - 59)

Return value: Text

Example

prints 'red/blue/green'

Concatenate(['red', 'blue', 'green'], '/')

Find

Find(searchText, targetText, startPosition?) -> Number

Finds a string of characters within a text value. Wildcards are NOT supported. A returned value of -1 indicates no results were found.

Parameters

  • searchText: Text - The character string to search for.
  • targetText: Text - The text to search.
  • startPosition (Optional): Number - The zero-based index of the character in the text to search from.

Return value: Number

Example

prints 6

Find('380', 'Esri, 380 New York Street', 0)

FromCharCode

FromCharCode(charCode1, [charCode2, ..., charCodeN]?) -> Text

Since version 1.16

Returns a text value created from a sequence of UTF-16 character codes.

Parameters

  • charCode1: Number - A number representing UTF-16 code units. Each unit has a range of 0-65535.
  • [charCode2, ..., charCodeN] (Optional): Number - A sequence of numbers representing UTF-16 code units. Each unit has a range of 0-65535.

Return value: Text

Examples

The following example returns 'XYZ'

FromCharCode(88,89,90)
// returns 'XYZ'

The following example returns '🌉'

FromCharCode(55356, 57097)
// returns '🌉'

FromCodePoint

FromCodePoint(codePoint1, [codePoint2, ..., codePoint1N]?) -> Text

Since version 1.16

Returns a text value created from a sequence of UTF-32 code points.

Parameters

  • codePoint1: Number - A code point.
  • [codePoint2, ..., codePoint1N] (Optional): Number - A list of code points

Return value: Text

Examples

The following example returns 'XYZ'

FromCodePoint(88,89,90)
// returns 'XYZ'

The following example returns '🌉'

FromCodePoint(127753)
// returns '🌉'

Left

Left(value, charCount) -> Text

Returns the specified number of characters from the beginning of a text value.

Parameters

  • value: Text - The value from which to get characters.
  • charCount: Number - The number of characters to get from the beginning of the text.

Return value: Text

Example

prints 'the'

Left('the quick brown fox', 3)

Lower

Lower(inputText) -> Text

Makes a text value lower case.

Parameter

  • inputText: Text - The text to be made lowercase.

Return value: Text

Example

prints 'hello'

Lower('HELLO')

Mid

Mid(value, startPosition, charCount) -> Text

Gets a number of characters from the middle of a text value.

Parameters

  • value: Text - The value from which to get characters. If the value is not of type Text, the value is first converted to Text.
  • startPosition: Number - The starting position from which to get the text. 0 is the first position.
  • charCount: Number - The number of characters to extract.

Return value: Text

Example

prints 'quick'

Mid('the quick brown fox', 4, 5)

Proper

Proper(inputText, applyToText) -> Text

Converts a text value to title case. By default, the beginning of every word is capitalized. The option firstword will capitalize only the first word.

Parameters

  • inputText: Text - The text to convert to title case.
  • applyToText: Text - A text value specifying the type of capitalization to be performed. By default every word is capitalized. This parameter accepts one of two values: everyword or firstword.

Return value: Text

Example

prints 'The Quick Brown Fox'

Proper('the quick brown fox', 'everyword')

Replace

Replace(value, searchText, replacementText, allOccurrences?) -> Text

Replaces a string within a text value. Defaults to replacing all occurrences.

Parameters

  • value: Text - The text in which to make replacements.
  • searchText: Text - The text to search for.
  • replacementText: Text - The replacement text.
  • allOccurrences (Optional): Boolean - Indicates if all occurrences of the searchText should be replaced in the text. Defaults to true.

Return value: Text

Example

prints 'the quick red fox'

Replace('the quick brown fox', 'brown', 'red')

Right(value, charCount) -> Text

Returns the specified number of characters from the end of a text value.

Parameters

  • value: Text - The text from which to get characters.
  • charCount: Number - The number of characters to get from the end of the text value.

Return value: Text

Example

prints 'fox'

Right('the quick brown fox', 3)

Split

Split(inputText, separatorText, limit?, removeEmpty?) -> Array<Text>

Splits a text value into an array.

Parameters

  • inputText: Text - The text value to be split.
  • separatorText: Text - The separator used to split the text.
  • limit (Optional): Number - An integer that specifies the number of splits. The default is -1, which indicates an unlimited number of splits.
  • removeEmpty (Optional): Boolean - Indicates whether to remove empty values. By default this is false.

Return value: Array<Text>

Examples

returns '[red,green]'

Split('red,green,blue,orange', ',', 2)

Splits the paragraph at each space an unlimited number of times. Returns an array of the words in the paragraph.

Split(paragraph, ' ', -1, true)

Text

Text(value, format?) -> Text

Converts its argument into a string and optionally formats it. Returns null if it fails.

Parameters

  • value: Any - A value to be converted to a string (e.g. date, number or other type). When a date is provided, this function assumes the date/time object is in UTC and automatically converts the value to the local time of the client executing the expression. If the date/time value returned from the database already represents local time, then you should use the toUTC function to avoid applying an extra offset.
  • format (Optional): Text - Formatting string for dates or numbers.

Possible values:

  • 0: Digit
  • #: Digit, omitting leading/trailing zeros
  • D: Day of the month, not padded (1 - 31)
  • DD: Day of the month, padded (01 - 31)
  • DDD: Ordinal day of the year (1 - 365)
  • d: Day of the week (1 - 7)
  • ddd: Abbreviated day of the week (e.g. Mon)
  • dddd: Full day of the week (e.g. Monday)
  • M: Month number (1 - 12)
  • MM: Month number, padded (01 - 12)
  • MMM: Abbreviated month name (e.g. Jan)
  • MMMM: Full month name (e.g. January)
  • m: Minutes, not padded (0 - 59)
  • mm: Minutes, padded (00 - 59)
  • Y: Full year
  • YY: Two-digit year
  • h: Civilian hours, not padded (0 - 12)
  • hh: Civilian hours, padded (00 - 12)
  • H: Military hours, not padded (0 - 24)
  • HH: Military hours, padded (00 - 24)
  • s: Seconds, not padded (0 - 59)
  • ss: Seconds, padded (00 - 59)

Return value: Text

Examples

Pad the number to the left of the decimal

Text(123, '0000') // '0123'

Restrict the number to the left of the decimal

Text(123, '00') // '23'

Group the number by thousands

Text(1234, '#,###') // '1,234'

Round the number to two decimal places

Text(12345678.123, '#,###.00') // '12,345,678.12'

Format number as currency

Text(1234.55, '$#,###.00') // '$1,234.55'

Round the number to two decimal places

Text(1.236, '#.00') // '1.24'

Maintain significant digits and group by thousands

Text(1234.5678, '#,##0.00#') // '1,234.568'

Format the number and format positive/negative - if there is a negative subpattern, it serves only to specify the negative prefix and suffix

Text(-2, 'Floor #;Basement #') // 'Basement 2'
Text(2, 'Floor #;Basement #') // 'Floor 2'

Multiply by 100 and format as percentage

Text(0.3, '#%') // '30%'

Format date and time at the moment. eg 'Tuesday, October 25, 2016 @ 08:43:11'

Text(Now(), 'dddd, MMMM D, Y @ h:m:s')

Date stored in the datetime field already represents local time, but Arcade assumes it is UTC. Offsets the local time to UTC to avoid applying the timezone offset twice.

Text(ToUTC($feature.datetime), 'dddd, MMMM D, Y @ h:m:s')

ToCharCode

ToCharCode(inputText, index?) -> Number

Since version 1.16

Returns a number between 0 and 65535 representing the UTF-16 code unit at the given index. Invalid halves of surrogate pairs are automatically removed.

Parameters

  • inputText: Text - The text from which to get a UTF-16 code unit value.
  • index (Optional): Number - An integer with a value of at least 0 and no greater than the number of characters of inputText. By default, this value is 0.

Return value: Number

Examples

The following example returns 88, the Unicode value for X.

ToCharCode('XYZ')
// returns 88

The following example returns 89, the Unicode value for Y.

ToCharCode('XYZ', 1)
// returns 89

The following example returns 65535.

ToCharCode('\uFFFF\uFFFE')
// returns 65535

The following example returns 55356.

ToCharCode('🌉')
// returns 55356

The following example returns 57097.

ToCharCode('🌉', 1)
// returns 57097

ToCodePoint

ToCodePoint(inputText, position?) -> Number

Since version 1.16

Returns a non-negative number representing the UTF-32 code point value of the input text. If indexed into the first half of a surrogate pair, the whole code point is returned. If indexed into the second half of the pair, this function returns the value of the second half. If a large code isn't a valid character, the function returns only the value of the half it indexes into.

Parameters

  • inputText: Text - The text from which to get a UTF-32 code point value.
  • position (Optional): Number - Position of a character in inputText from which to return the code point value. By default this value is 0.

Return value: Number

Examples

The following example returns 88, the Unicode value for X.

ToCodePoint('XYZ')
// returns 88

The following example returns 89, the Unicode value for Y.

ToCodePoint('XYZ', 1)
// returns 89

The following example returns 127753.

ToCodePoint('🌉')
// returns 127753

The following example returns 57097.

ToCodePoint('🌉', 1)
// returns 57097

Trim

Trim(inputText) -> Text

Removes spaces from the beginning or end of an input text value.

Parameter

  • inputText: Text - The text to be trimmed.

Return value: Text

Example

prints 'hello world'

Trim('   hello world')

Upper

Upper(inputText) -> Text

Makes text upper case.

Parameter

  • inputText: Text - The text value to be made uppercase.

Return value: Text

Example

prints 'HELLO'

Upper('Hello')

UrlEncode

UrlEncode(textOrDictionary) -> Text

Since version 1.7

Encodes a URL by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character.

Parameter

Return value: Text

Example

Encodes the URL provided

var urlsource ='arcgis-survey123://?';
var params = {
  itemID:'36ff9e8c13e042a58cfce4ad87f55d19',
  center: '43.567,-117.380'
};
return urlsource  + UrlEncode(params);
//arcgis-survey123://?center=43.567%2C-117.380&itemID=36ff9e8c13e042a58cfce4ad87f55d19

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.