A built-in representation for efficient string manipulation. String literals
are enclosed in "double quotes". Strings are not lists of characters.
Determine if a string is empty.
isEmpty "" == True
isEmpty "the world" == FalseReplace all occurrences of some substring.
replace "." "-" "Json.Decode.succeed" == "Json-Decode-succeed"
replace "," "/" "a,b,c,d,e" == "a/b/c/d/e"Note: If you need more advanced replacements, check out the
elm/parser or elm/regex package.
Append two strings. You can also use the (++) operator
to do this.
append "butter" "fly" == "butterfly"Concatenate many strings into one.
concat ["never","the","less"] == "nevertheless"Split a string using a given separator.
split "," "cat,dog,cow" == ["cat","dog","cow"]
split "/" "home/evan/Desktop/" == ["home","evan","Desktop", ""]Put many strings together with a given separator.
join "a" ["H","w","ii","n"] == "Hawaiian"
join " " ["cat","dog","cow"] == "cat dog cow"
join "/" ["home","evan","Desktop"] == "home/evan/Desktop"Break a string into words, splitting on chunks of whitespace.
words "How are \t you? \n Good?" == ["How","are","you?","Good?"]Break a string into lines, splitting on newlines.
lines "How are you?\nGood?" == ["How are you?", "Good?"]Take a substring given a start and end index. Negative indexes are taken starting from the end of the list.
slice 7 9 "snakes on a plane!" == "on"
slice 0 6 "snakes on a plane!" == "snakes"
slice 0 -7 "snakes on a plane!" == "snakes on a"
slice -6 -1 "snakes on a plane!" == "plane"Take n characters from the left side of a string.
left 2 "Mulder" == "Mu"Take n characters from the right side of a string.
right 2 "Scully" == "ly"Drop n characters from the left side of a string.
dropLeft 2 "The Lone Gunmen" == "e Lone Gunmen"Drop n characters from the right side of a string.
dropRight 2 "Cigarette Smoking Man" == "Cigarette Smoking M"See if the second string contains the first one.
contains "the" "theory" == True
contains "hat" "theory" == False
contains "THE" "theory" == FalseSee if the second string starts with the first one.
startsWith "the" "theory" == True
startsWith "ory" "theory" == FalseSee if the second string ends with the first one.
endsWith "the" "theory" == False
endsWith "ory" "theory" == TrueGet all of the indexes for a substring in another string.
indexes "i" "Mississippi" == [1,4,7,10]
indexes "ss" "Mississippi" == [2,5]
indexes "needle" "haystack" == []Try to convert a string into an int, failing on improperly formatted strings.
String.toInt "123" == Just 123
String.toInt "-42" == Just -42
String.toInt "3.1" == Nothing
String.toInt "31a" == NothingIf you are extracting a number from some raw user input, you will typically
want to use Maybe.withDefault to handle bad data:
Maybe.withDefault 0 (String.toInt "42") == 42
Maybe.withDefault 0 (String.toInt "ab") == 0Convert an Int to a String.
String.fromInt 123 == "123"
String.fromInt -42 == "-42"Check out Debug.toString to convert any value to a string
for debugging purposes.
Try to convert a string into a float, failing on improperly formatted strings.
String.toFloat "123" == Just 123.0
String.toFloat "-42" == Just -42.0
String.toFloat "3.1" == Just 3.1
String.toFloat "31a" == NothingIf you are extracting a number from some raw user input, you will typically
want to use Maybe.withDefault to handle bad data:
Maybe.withDefault 0 (String.toFloat "42.5") == 42.5
Maybe.withDefault 0 (String.toFloat "cats") == 0Convert a Float to a String.
String.fromFloat 123 == "123"
String.fromFloat -42 == "-42"
String.fromFloat 3.9 == "3.9"Check out Debug.toString to convert any value to a string
for debugging purposes.
Add a character to the beginning of a string.
cons 'T' "he truth is out there" == "The truth is out there"Split a non-empty string into its head and tail. This lets you pattern match on strings exactly as you would with lists.
uncons "abc" == Just ('a',"bc")
uncons "" == NothingConvert a string to a list of characters.
toList "abc" == ['a','b','c']
toList "🙈🙉🙊" == ['🙈','🙉','🙊']Convert a list of characters into a String. Can be useful if you want to create a string primarily by consing, perhaps for decoding something.
fromList ['a','b','c'] == "abc"
fromList ['🙈','🙉','🙊'] == "🙈🙉🙊"Cosmetic operations such as padding with extra characters or trimming whitespace.
Convert a string to all upper case. Useful for case-insensitive comparisons and VIRTUAL YELLING.
toUpper "skinner" == "SKINNER"Convert a string to all lower case. Useful for case-insensitive comparisons.
toLower "X-FILES" == "x-files"Pad a string on both sides until it has a given length.
pad 5 ' ' "1" == " 1 "
pad 5 ' ' "11" == " 11 "
pad 5 ' ' "121" == " 121 "Pad a string on the left until it has a given length.
padLeft 5 '.' "1" == "....1"
padLeft 5 '.' "11" == "...11"
padLeft 5 '.' "121" == "..121"Pad a string on the right until it has a given length.
padRight 5 '.' "1" == "1...."
padRight 5 '.' "11" == "11..."
padRight 5 '.' "121" == "121.."Get rid of whitespace on the left of a string.
trimLeft " hats \n" == "hats \n"Get rid of whitespace on the right of a string.
trimRight " hats \n" == " hats"Transform every character in a string
map (\c -> if c == '/' then '.' else c) "a/b/c" == "a.b.c"Keep only the characters that pass the test.
filter isDigit "R2-D2" == "22"Reduce a string from the left.
foldl cons "" "time" == "emit"Reduce a string from the right.
foldr cons "" "time" == "time"Determine whether any characters pass the test.
any isDigit "90210" == True
any isDigit "R2-D2" == True
any isDigit "heart" == False
A
Stringis a chunk of text:A
Stringcan represent any sequence of unicode characters. You can use the unicode escapes from\u{0000}to\u{10FFFF}to represent characters by their code point. You can also include the unicode characters directly. Using the escapes can be better if you need one of the many whitespace characters with different widths.Note: JavaScript lets you use double quotes and single quotes interchangably. This is not true in Elm. You must use double quotes for a
String, and you must use single quotes for aChar.