Strings

The Strings registry offers a comprehensive set of functions for manipulating strings, including formatting, splitting, joining, and other common string operations.

You can easily import all the functions from the strings registry by including the following import statement in your code

import "github.com/go-sprout/sprout/registry/strings"

nospace

The function removes all whitespace characters from the provided string, eliminating any spaces, tabs, or line breaks.

{{ "Hello World" | nospace }} // Output: "HelloWorld"

trim

The function removes any leading and trailing whitespace from the provided string.

{{ " Hello World " | trim }} // Output: "Hello World"

trimAll

The function removes all instances of any characters in the 'cutset' from both the beginning and the end of the provided string.

{{ "xyzHelloxyz" | trimAll "xyz" }} // Output: "Hello"

trimPrefix

The function removes the specified 'prefix' from the start of the provided string if it is present.

{{ "HelloWorld" | trimPrefix "Hello" }} // Output: "World"
{{ "HelloWorld" | trimPrefix "World" }} // Output: "HelloWorld"

trimSuffix

The function removes the specified 'suffix' from the end of the provided string if it is present.

{{ "HelloWorld" | trimSuffix "Hello" }} // Output: "HelloWorld"
{{ "HelloWorld" | trimSuffix "World" }} // Output: "Hello"

contains

The function checks whether the provided string contains the specified substring.

{{ "Hello" | contains "ell" }} // Output: true

hasPrefix

The function checks whether the provided string starts with the specified prefix.

{{ "HelloWorld" | hasPrefix "Hello" }} // Output: true

hasSuffix

The function checks whether the provided string ends with the specified suffix.

{{ "HelloWorld" | hasSuffix "World" }} // Output: true

toLower

The function converts all characters in the provided string to lowercase.

{{ "HELLO WORLD" | toLower }} // Output: "hello world"

toUpper

The function converts all characters in the provided string to uppercase.

{{ "hello world" | toUpper }} // Output: "HELLO WORLD"

replace

The function replaces all occurrences of a specified substring ('old') in the source string with a new substring ('new').

{{ "banana" | replace "a", "o" }} // Output: "bonono"

repeat

The function repeats the provided string a specified number of times.

{{ "ha" | repeat 3 }} // Output: "hahaha"

join

The function concatenates elements of a slice into a single string, with each element separated by a specified delimiter. It can convert various slice types to a slice of strings if needed before joining.

{{ $list := slice "apple" "banana" "cherry" }}
{{ $list | join ", " }} // Output: "apple, banana, cherry"

trunc

The function truncates the provided string to a maximum specified length. If the length is negative, it removes the specified number of characters from the beginning of the string.

{{ "Hello World" | trunc 5 }} // Output: "Hello"
{{ "Hello World" | trunc -5 }} // Output: "World"

shuffle

The function randomly rearranges the characters in the provided string, producing a shuffled version of the original string.

{{ "hello" | shuffle }} // Output: "loleh" (output may vary due to randomness)

ellipsis

The function truncates a string to a specified maximum width and appends an ellipsis ("...") if the string exceeds that width.

{{ "Hello World" | ellipsis 10 }} // Output: "Hello W..."

ellipsisBoth

The function truncates a string from both ends, preserving the middle portion and adding ellipses ("...") to both ends if the string exceeds the specified length.

{{ "Hello World" | ellipsisBoth 1 10 }} // Output: "...lo Wor..."

initials

The function extracts initials from a string, optionally using specified delimiters to identify word boundaries.

{{ "John Doe" | initials }} // Output: "JD"

plural

The function returns a specified string ('one') if the count is 1; otherwise, it returns an alternative string ('many').

{{ 1 | plural "apple" "apples" }} // Output: "apple"
{{ 2 | plural "apple" "apples" }} // Output: "apples"

wrap

The function breaks a string into lines, ensuring that each line does not exceed a specified maximum length. It avoids splitting words across lines unless absolutely necessary.

{{ "This is a long string that needs to be wrapped." | wrap 10 }}
// Output: "This is a\nlong\nstring\nthat needs\nto be\nwrapped."

wrapWith

The function breaks a string into lines with a specified maximum length, using a custom newline character to separate the lines. It only wraps words when they exceed the maximum line length.

{{ "This is a long string that needs to be wrapped." | wrapWith 10 "<br>" }}
// Output: "This is a<br>long<br>string<br>that needs<br>to be<br>wrapped."

quote

The function wraps each element in a provided list with double quotes and separates them with spaces.

{{ $list := slice "hello" "world" 123 }}
{{ $list | quote }}
// Output: "hello" "world" "123"

squote

The function wraps each element in the provided list with single quotes and separates them with spaces.

{{ $list := slice "hello" "world" 123 }}
{{ $list | squote }}
// Output: 'hello' 'world' '123'

toCamelCase

Converts a string to camelCase format.

{{ "hello world" | toCamelCase }} // Output: "helloWorld"

toKebabCase

Converts a string to kebab-case format.

{{ "hello world" | toKebabCase }} // Output: "hello-world"

toPascalCase

Converts a string to PascalCase format.

{{ "hello world" | toPascalCase }} // Output: "HelloWorld"

toDotCase

Converts a string to dot.case format.

{{ "hello world" | toDotCase }} // Output: "hello.world"

toPathCase

Converts a string to path/case format.

{{ "hello world" | toPathCase }} // Output: "hello/world"

toConstantCase

Converts a string to CONSTANT_CASE format.

{{ "hello world" | toConstantCase }} // Output: "HELLO_WORLD"

toSnakeCase

Converts a string to snake_case format.

{{ "hello world" | toSnakeCase }} // Output: "hello_world"

toTitleCase

Converts a string to Title Case format.

{{ "hello world" | toTitleCase }} // Output: "Hello World"

untitle

Converts the first letter of each word in a string to lowercase.

{{ "Hello World" | untitle }} // Output: "hello world"

swapCase

Switches the case of each letter in a string, converting lowercase to uppercase and vice versa.

{{ "Hello World" | swapCase }} // Output: "hELLO wORLD"

capitalize

Uppercases the first letter of a string while leaving the rest of the string unchanged.

{{ "hello world" | capitalize }} // Output: "Hello world"
{{ "123boo_bar" | capitalize }} // Output: 123Boo_bar
{{ " Fe bar" | capitalize }} // Output: " Fe bar"

uncapitalize

Lowercases the first letter of a string while leaving the rest of the string unchanged.

{{ "Hello World" | uncapitalize }} // Output: "hello World"
{{ "123Boo_bar" | uncapitalize }} // Output: 123boo_bar
{{ " Fe bar" | uncapitalize }} // Output: " fe bar"

split

Divides a string into a map of parts based on a specified separator, returning a collection of the split components.

{{ "apple,banana,cherry" | split "," }}
// Output: { "_0":"apple", "_1":"banana", "_2":"cherry" }

splitn

Splits a string into a specified number of parts using a separator, returning a map with up to n elements.

{{ "apple,banana,cherry" | split "," 2 }}
// Output: { "_0":"apple", "_1":"banana,cherry" }

substr

Extracts a portion of a string based on given start and end positions, with support for negative indices to count from the end.

{{ "Hello World" | substr 0 5 }} // Output: "Hello"

indent

Adds spaces to the beginning of each line in a string, effectively indenting the text.

{{ "Hello\nWorld" | indent 4 }} // Output: "    Hello\n    World"

nindent

Similar to Indent, but also adds a newline before the indented lines.

{{ "Hello\nWorld" | nindent 4 }} // Output: "\n    Hello\n    World"

seq

Generates a sequence of numbers as a string, allowing for customizable start, end, and step values, similar to the Unix seq command.

{{ seq 1, 2, 10 }} // Output: "1 3 5 7 9"
{{ seq 3 -3 2 }} // Output: "3"
{{ seq }} // Output: ""
{{ seq 0 4 }} // Output: "0 1 2 3 4"
{{ seq -5 }} // Output: "1 0 -1 -2 -3 -4 -5"
{{ seq 0 -4 }} // Output: "0 -1 -2 -3 -4"

Last updated