Skip to content

Strings Module

The strings module provides 44 utility functions for string manipulation — from basic case conversion to case convention converters, text processing, and character checks.

Import

import strings

API Reference

Case Conversion

Function Description Example
upper(s) All uppercase "hello""HELLO"
lower(s) All lowercase "HELLO""hello"
capitalize(s) First letter upper, rest lower "hELLO""Hello"
title(s) First letter of each word upper "hello world""Hello World"
swapcase(s) Swap upper↔lower "Hello""hELLO"

Case Convention Converters

Convert between naming conventions — no more rewriting these in every project.

Function Description Example
camel_case(s) camelCase "hello_world""helloWorld"
pascal_case(s) PascalCase "hello_world""HelloWorld"
snake_case(s) snake_case "helloWorld""hello_world"
kebab_case(s) kebab-case "helloWorld""hello-world"
screaming_snake(s) SCREAMING_SNAKE "helloWorld""HELLO_WORLD"
import strings

# Convert between API response keys and code conventions
let api_key = "firstName"
print(strings.snake_case(api_key))      # "first_name"
print(strings.kebab_case(api_key))      # "first-name"
print(strings.screaming_snake(api_key)) # "FIRST_NAME"

# Reverse: code to API
let code_name = "user_email_address"
print(strings.camel_case(code_name))    # "userEmailAddress"
print(strings.pascal_case(code_name))   # "UserEmailAddress"
Function Returns Description
contains(s, sub) bool True if sub is found in s
starts_with(s, prefix) bool True if s starts with prefix
ends_with(s, suffix) bool True if s ends with suffix
index_of(s, sub) int Index of first occurrence, or -1
last_index_of(s, sub) int Index of last occurrence, or -1
count(s, sub) int Number of non-overlapping occurrences

Transform

Function Returns Description
trim(s) str Remove whitespace from both ends
trim_left(s) str Remove whitespace from left
trim_right(s) str Remove whitespace from right
replace(s, old, new) str Replace all occurrences of old with new
repeat(s, n) str Repeat s n times
reverse(s) str Reverse the string
removeprefix(s, prefix) str Remove prefix if present
removesuffix(s, suffix) str Remove suffix if present
pad_left(s, width, fill) str Left-pad to width with fill char
pad_right(s, width, fill) str Right-pad to width with fill char
center(s, width, fill) str Center in field of width
zfill(s, width) str Zero-fill, preserving sign: "-42""-00042"
char_at(s, idx) str Character at index (supports negative)

Character Checks

Function Returns Description
is_empty(s) bool True if s is ""
is_digit(s) bool True if all chars are 0-9
is_alpha(s) bool True if all chars are a-z/A-Z
is_alnum(s) bool True if all chars are alphanumeric
is_space(s) bool True if all chars are whitespace
is_upper(s) bool True if all alpha chars are uppercase
is_lower(s) bool True if all alpha chars are lowercase
is_ascii(s) bool True if all chars are ASCII (0-127)
is_printable(s) bool True if all chars are printable
is_numeric(s) bool True if string is a valid number (int or float)

Text Utilities

Functions that save time in every project:

Function Returns Description
truncate(s, max, suffix) str Truncate with suffix: "Hello World""Hello..."
slugify(s) str URL-friendly slug: "Hello World!""hello-world"
word_wrap(s, width) str Wrap text at word boundaries
dedent(s) str Remove common leading whitespace (like Python's textwrap.dedent)
abbreviate(s, max) str Abbreviate at word boundary: "Hello World""Hello..."

Split & Join

Function Returns Description
split(s, sep) list[str] Split string by separator
join(sep, parts) str Join list of strings with separator
splitlines(s) list[str] Split by newlines (handles \n, \r\n, \r)

Usage Examples

Text Processing

import strings

def main() -> int:
    let name = "  John Doe  "
    let clean = strings.trim(name)
    print(strings.upper(clean))       # "JOHN DOE"
    print(strings.swapcase("Hello"))  # "hELLO"

    # Python 3.9+ style
    print(strings.removeprefix("test_file", "test_"))  # "file"
    print(strings.removesuffix("app.desi", ".desi"))   # "app"

    # Padding and formatting
    print(strings.pad_left("42", 5, "0"))    # "00042"
    print(strings.center("hi", 9, "*"))      # "***hi****"

    # Desi extras
    print(strings.slugify("Hello World!"))   # "hello-world"
    print(strings.word_wrap("A very long sentence that should be wrapped at forty chars", 40))

    # Numeric validation
    print(strings.is_numeric("3.14"))   # true
    print(strings.is_numeric("abc"))    # false
    print(strings.is_numeric("-42"))    # true
    0

Case Convention Pipeline

import strings

# API to code conversion pipeline
let api_fields = ["firstName", "lastName", "emailAddress"]
for field in api_fields:
    let db_col = strings.snake_case(field)
    let env_var = strings.screaming_snake(field)
    let css_class = strings.kebab_case(field)
    print(f"{field} → db: {db_col}, env: {env_var}, css: {css_class}")

[!NOTE] split() and join() are also available as string methods:

let parts = "a,b,c".split(",")   # ["a", "b", "c"]
let joined = ",".join(parts)     # "a,b,c"

See Also