Strings in Gleam are immutable text surrounded by double quotes. They support unicode characters, and can be multi-line.
let greeting = "Hello, Joe! π"
let multi_line_string = "one
two
three"
Strings can be joined together using the <>
operator:
let name = "Mike"
"Hello, " <> name <> "!"
// -> "Hello, Mike!"
The gleam/string
module in the standard library provides functions for working with strings.
Strings can be matched upon in case expressions:
pub fn on_an_excellent_adventure(name: String) -> Bool {
case name {
"Bill" -> True
"Ted" -> True
_ -> False
}
}
If you want to match on the beginning of a string and assign the rest to a variable you can use the <>
operator pattern:
pub fn profession(name: String) -> String {
case name {
"Dr " <> rest -> rest <> " is a doctor"
_ -> "I'm not sure what " <> name <> " does"
}
}
In this exercise you'll be processing log-lines.
Each log line is a string formatted as follows: "[<LEVEL>]: <MESSAGE>"
.
There are three different log levels:
INFO
WARNING
ERROR
You have three tasks, each of which will take a log line and ask you to do something with it.
Implement the message
function to return a log line's message:
message("[ERROR]: Invalid operation")
// -> "Invalid operation"
Any leading or trailing white space should be removed:
message("[WARNING]: Disk almost full\r\n")
// -> "Disk almost full"
Implement the log_level
function to return a log line's log level, which should be returned in lowercase:
log_level("[ERROR]: Invalid operation")
// -> "error"
Implement the reformat
function that reformats the log line, putting the message first and the log level after it in parentheses:
reformat("[INFO]: Operation completed")
// -> "Operation completed (info)"
Sign up to Exercism to learn and master Gleam with 36 concepts, 125 exercises, and real human mentoring, all for free.