string
A sequence of Unicode codepoints.
You can iterate over the characters (or rather, grapheme clusters) of the string
using a for loop. Strings can be added with
the +
operator, joined together and
multiplied with integers.
Typst provides utility methods for string manipulation. Many of these methods
(e.g., split
, trim
and replace
) operate on patterns: A pattern can be
either a string or a regular expression. This makes the methods
quite versatile.
Note: Currently all lengths and indices are expressed in terms of UTF-8 bytes. This might change to grapheme clusters in the future.
Example
#"hello world!" \
#"\"hello\n world\"!" \
#"1 2 3".split() \
#"1,2;3".split(regex("[,;]")) \
#(regex("\d+") in "ten euros") \
#(regex("\d+") in "10 euros")

Escape sequences
Just like in markup, you can escape a few symbols in strings:
\\
for a backslash\"
for a quote\n
for a newline\r
for a carriage return\t
for a tab\u{1f600}
for a hexadecimal Unicode escape sequence
MethodsMethods are functions that are available on values of a type. They can be called for a value using the .
operator.
.
operator.len
method
The length of the string in UTF-8 encoded bytes.
first
method
Extract the first character (or rather, grapheme cluster) of the string. Fails with an error if the string is empty.
last
method
Extract the last character (or rather, grapheme cluster) of the string. Fails with an error if the string is empty.
at
method
Extract the first character (or rather, grapheme cluster) after the specified index. Fails with an error if the index is out of bounds.
index
The byte index.
slice
method
Extract a substring of the string. Fails with an error if the start or end index is out of bounds.
start
The start byte index (inclusive).
end
The end byte index (exclusive). If omitted, the whole slice until the end of the string is extracted.
count
The number of bytes to extract. This is equivalent to passing start + count
as the end
position. Mutually exclusive with end
.
contains
method
Whether the string contains the specified pattern.
This method also has dedicated syntax: You can write "bc" in "abcd"
instead
of "abcd".contains("bc")
.
pattern
The pattern to search for.
starts-with
method
Whether the string starts with the specified pattern.
pattern
The pattern the string might start with.
ends-with
method
Whether the string ends with the specified pattern.
pattern
The pattern the string might end with.
find
method
Searches for the specified pattern in the string and returns the first match
as a string or none
if there is no match.
pattern
The pattern to search for.
position
method
Searches for the specified pattern in the string and returns the index of the
first match as an integer or none
if there is no match.
pattern
The pattern to search for.
match
method
Searches for the specified pattern in the string and returns a dictionary
with details about the first match or none
if there is no match.
The returned dictionary has the following keys:
start
: The start offset of the matchend
: The end offset of the matchtext
: The text that matched.captures
: An array containing a string for each matched capturing group. The first item of the array contains the first matched capturing, not the whole match! This is empty unless thepattern
was a regex with capturing groups.
pattern
The pattern to search for.
matches
method
Searches for the specified pattern in the string and returns an array of dictionaries with details about all matches. For details about the returned dictionaries, see above.
pattern
The pattern to search for.
replace
method
Replaces all or a specified number of matches of a pattern with a replacement string and returns the resulting string.
pattern
The pattern to search for.
replacement
The string to replace the matches with.
count
If given, only the first count
matches of the pattern are placed.
trim
method
Removes matches of a pattern from one or both sides of the string, once or repeatedly and returns the resulting string.
pattern
The pattern to search for.
at
Can be start
or end
to only trim the start or end of the string.
If omitted, both sides are trimmed.
repeat
Whether to repeatedly removes matches of the pattern or just once.
Defaults to true
.
split
method
Splits a string at matches of a specified pattern and returns an array of the resulting parts.
pattern
The pattern to split at. Defaults to whitespace.