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.

Signature

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

trim

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

Signature

{{ " 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.

Signature

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

trimPrefix

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

Signature

{{ "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.

Signature

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

contains

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

Signature

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

hasPrefix

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

Signature

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

hasSuffix

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

Signature

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

toLower

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

Signature

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

toUpper

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

Signature

{{ "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').

Signature

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

repeat

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

Signature

{{ "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.

Signature

{{- $list := list "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.

Signature

{{ "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.

Signature

{{ "hello" | shuffle }} // Output(will be different): "loleh"

ellipsis

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

Signature

{{ "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.

Signature

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

initials

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

Signature

{{ "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').

Signature

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

Signature

{{ "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.

Signature

{{ "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.

Signature

{{- $list := list "hello" "world" 123 -}}
{{ $list | quote }}
// Output(human readable): "hello" "world" "123"

squote

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

Signature

{{- $list := list "hello" "world" 123 -}}
{{ $list | squote }}
// Output(human readable): 'hello' 'world' '123'

toCamelCase

Converts a string to camelCase format.

Signature

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

toKebabCase

Converts a string to kebab-case format.

Signature

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

toPascalCase

Converts a string to PascalCase format.

Signature

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

toDotCase

Converts a string to dot.case format.

Signature

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

toPathCase

Converts a string to path/case format.

Signature

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

toConstantCase

Converts a string to CONSTANT_CASE format.

Signature

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

toSnakeCase

Converts a string to snake_case format.

Signature

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

toTitleCase

Converts a string to Title Case format.

Signature

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

untitle

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

Signature

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

swapCase

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

Signature

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

capitalize

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

Signature

{{ "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.

Signature

{{ "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.

Signature

{{ "apple,banana,cherry" | split "," }}
// Output: map[_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.

Signature

{{ "apple,banana,cherry" | splitn "," 2 }}
// Output: map[_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.

Signature

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

indent

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

Signature

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

nindent

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

Signature

{{ "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.

Signature

{{ 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