Skip to content

Strings

Source: examples/strings.ion in the repo.

// String manipulation showcase
let greeting = "Hello, World!";
// Basic methods
io::println(f"Length: {greeting.len()}");
io::println(f"Upper: {greeting.to_upper()}");
io::println(f"Lower: {greeting.to_lower()}");
let has_world = greeting.contains("World");
io::println(f"Contains World: {has_world}");
// Splitting and joining
let csv = "alice,bob,charlie,diana";
let names = csv.split(",");
io::println(f"Names: {names}");
io::println(f"Joined: {names.join(" & ")}");
// String multiplication
let border = "=" * 40;
io::println(border);
io::println(" Ion Language String Demo");
io::println(border);
// Trimming and padding
let messy = " hello ";
io::println(f"Trimmed: [{messy.trim()}]");
io::println(f"Trim start: [{messy.trim_start()}]");
io::println(f"Trim end: [{messy.trim_end()}]");
let label = "ID";
io::println(f"Pad start: [{label.pad_start(10, " ")}]");
io::println(f"Pad end: [{label.pad_end(10, "-")}]");
// Replace and repeat
let text = "the quick brown fox";
let replaced = text.replace("fox", "cat");
io::println(f"Replaced: {replaced}");
io::println(f"Repeat: {"ab".repeat(5)}");
// Starts/ends with and strip prefix/suffix
let path = "/home/user/file.txt";
io::println(f"Starts with /home: {path.starts_with("/home")}");
io::println(f"Ends with .txt: {path.ends_with(".txt")}");
io::println(f"Strip prefix: {path.strip_prefix("/home")}");
io::println(f"Strip suffix: {path.strip_suffix(".txt")}");
// F-string interpolation with dicts
let items = [
#{name: "Widget", price: 9.99},
#{name: "Gadget", price: 24.50},
#{name: "Doohickey", price: 3.75},
];
for item in items {
let p = item.price;
io::println(f" {item.name}: ${p}");
}
io::println(border);
// String search
match text.find("quick") {
Some(i) => io::println(f"Found 'quick' at index {i}"),
None => io::println("Not found"),
}
// Parsing strings to numbers
let input = "42";
match input.to_int() {
Ok(n) => io::println(f"Parsed: {n * 2}"),
Err(e) => io::println(f"Parse error: {e}"),
}
// Triple-quoted strings
let poem = """
Roses are red,
Violets are blue,
Ion is neat,
And so are you.
""";
io::println(poem);
// Chars and reverse
let word = "racecar";
let reversed = word.reverse();
io::println(f"'{word}' reversed is '{reversed}'");
if word == reversed {
io::println("It's a palindrome!");
}
// String slicing and indexing
let alpha = "abcdefg";
io::println(f"First: {alpha[0]}, Last: {alpha[-1]}, Third: {alpha[2]}");
io::println(f"Slice [1..4]: {alpha[1..4]}");
// Unicode support
io::println(f"Char length of 'Hello': {"Hello".char_len()}");
io::println(f"Byte length of 'Hello': {"Hello".len()}");

Documentation reflects Ion v0.2.0-66-g3faa376.