gleam/string
Strings in Gleam are UTF-8 binaries. They can be written in your code a
text surrounded by "double quotes"
.
Types
String
pub type String = String
Functions
append
pub fn append(to first: String, suffix second: String) -> String
Create a new string by joining two strings together.
This function copies both strings and runs in linear time. If you find yourself joining strings frequently consider using the iodata module as it can append strings much faster!
Examples
> append(to: "butter", suffix: "fly")
"butterfly"
compare
pub external fn compare(String, String) -> order.Order
Compares two strings to see which is "larger" by comparing their graphemes.
This does not compare the size or length of the given strings.
Examples
> compare("Anthony", "Anthony")
order.Eq
> compare("A", "B")
order.Gt
concat
pub fn concat(strings: List(String)) -> String
Create a new string by joining many strings together.
This function copies both strings and runs in linear time. If you find yourself joining strings frequently consider using the iodata module as it can append strings much faster!
Examples
> concat(["never", "the", "less"])
"nevertheless"
contains
pub fn contains( does haystack: String, contain needle: String, ) -> Bool
Check if the first string contains the second.
Examples
> contains(does: "theory", contain: "ory")
True
> contains(does: "theory", contain: "the")
True
> contains(does: "theory", contain: "THE")
False
drop_left
pub fn drop_left( from string: String, up_to num_graphemes: Int, ) -> String
Drop n Graphemes from the left side of a string.
Examples
> drop_left(from: "The Lone Gunmen", up_to: 2)
"e Lone Gunmen"
drop_right
pub fn drop_right( from string: String, up_to num_graphemes: Int, ) -> String
Drop n Graphemes from the right side of a string.
Examples
> drop_right(from: "Cigarette Smoking Man", up_to: 2)
"Cigarette Smoking M"
ends_with
pub external fn ends_with(String, String) -> Bool
See if the first string ends with the second one.
Examples
> ends_with("theory", "ory")
True
is_empty
pub fn is_empty(str: String) -> Bool
Determine if a string is empty.
Examples
> is_empty("")
True
> is_empty("the world")
False
join
pub fn join( strings: List(String), with separator: String, ) -> String
Join many strings together with a given separator.
This function runs in linear time.
Examples
> join(["home","evan","Desktop"], with: "/")
"home/evan/Desktop"
length
pub external fn length(String) -> Int
Get the number of grapheme clusters in a given string.
This function has to iterate across the whole string to count the number of graphemes, so it runs in linear time.
Examples
> length("Gleam")
5
> length("ß↑e̊")
3
> length("")
0
lowercase
pub external fn lowercase(String) -> String
Create a new string with all the graphemes in the input string converted to lowercase.
Useful for case-insensitive comparisons.
Examples
> lowercase("X-FILES")
"x-files"
pad_left
pub fn pad_left( string: String, to length: Int, with pad_string: String, ) -> String
Pad a string on the left until it has at least given number of Graphemes.
Examples
> pad_left("121", to: 5, with: ".")
"..121"
> pad_left("121", to: 3, with: ".")
"121"
> pad_left("121", to: 2, with: ".")
"121"
pad_right
pub fn pad_right( string: String, to length: Int, with pad_string: String, ) -> String
Pad a string on the right until it has a given length.
Examples
> pad_right("121", to: 5, with: ".")
"121.."
> pad_right("121", to: 3, with: ".")
"121"
> pad_right("121", to: 2, with: ".")
"121"
pop_grapheme
pub external fn pop_grapheme( string: String, ) -> Result(tuple(String, String), Nil)
Split a non-empty string into its head and tail. This lets you pattern match on strings exactly as you would with lists.
Examples
> pop_grapheme("gleam")
Ok(tuple("g", "leam"))
> pop_grapheme("")
Error(Nil)
repeat
pub fn repeat(string: String, times times: Int) -> String
Create a new string by repeating a string a given number of times.
This function runs in linear time.
Examples
> repeat("ha", times: 3)
"hahaha"
replace
pub fn replace( in string: String, each pattern: String, with substitute: String, ) -> String
Create a new string by replacing all occurrences of a given substring.
Examples
> replace("www.example.com", each: ".", with: "-")
"www-example-com"
> replace("a,b,c,d,e", each: ",", with: "/")
"a/b/c/d/e"
reverse
pub fn reverse(string: String) -> String
Reverse a string.
This function has to iterate across the whole string so it runs in linear time.
Examples
> reverse("stressed")
"desserts"
slice
pub fn slice( from string: String, at_index idx: Int, length len: Int, ) -> String
Take a substring given a start and end Grapheme indexes. Negative indexes are taken starting from the end of the list.
Examples
> slice(from: "gleam", at_index: 1, length: 2)
"le"
> slice(from: "gleam", at_index: 1, length: 10)
"leam"
> slice(from: "gleam", at_index: 10, length: 3)
""
> slice(from: "gleam", at_index: -2, length: 2)
"am"
> slice(from: "gleam", at_index: -12, length: 2)
""
split
pub fn split(x: String, on substring: String) -> List(String)
Create a list of strings by splitting a given string on a given substring.
Examples
> split("home/gleam/desktop/", on: "/")
["home","gleam","desktop", ""]
starts_with
pub external fn starts_with(String, String) -> Bool
See if the first string starts with the second one.
Examples
> starts_with("theory", "ory")
False
to_graphemes
pub fn to_graphemes(string: String) -> List(String)
Convert a string to a list of Graphemes.
> to_graphemes("abc")
["a", "b", "c"]
trim
pub fn trim(string: String) -> String
Get rid of whitespace on both sides of a String.
Examples
> trim(" hats \n")
"hats"
trim_left
pub fn trim_left(string: String) -> String
Get rid of whitespace on the left of a String.
Examples
> trim_left(" hats \n")
"hats \n"
trim_right
pub fn trim_right(string: String) -> String
Get rid of whitespace on the right of a String.
Examples
> trim_right(" hats \n")
" hats"
uppercase
pub external fn uppercase(String) -> String
Create a new string with all the graphemes in the input string converted to uppercase.
Useful for case-insensitive comparisons and VIRTUAL YELLING.
Examples
> uppercase("skinner")
"SKINNER"