String Extensions

String extensions for validation, truncation, slug generation, and case conversion.

← Back
Language: swift | Tags: string validation extension utilities
extension String {
    /// Check if string is valid email
    var isValidEmail: Bool {
        let regex = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/
        return self.wholeMatch(of: regex) != nil
    }

    /// Truncate string with ellipsis
    func truncated(to maxLength: Int, trailing: String = "...") -> String {
        guard count > maxLength else { return self }
        return String(prefix(maxLength - trailing.count)) + trailing
    }

    /// Convert to URL-friendly slug
    var slugified: String {
        lowercased()
            .replacingOccurrences(of: " ", with: "-")
            .replacingOccurrences(of: "[^a-z0-9-]", with: "", options: .regularExpression)
            .replacingOccurrences(of: "-+", with: "-", options: .regularExpression)
            .trimmingCharacters(in: CharacterSet(charactersIn: "-"))
    }

    /// Convert camelCase to snake_case
    var snakeCased: String {
        let pattern = "([a-z])([A-Z])"
        return self.replacingOccurrences(
            of: pattern,
            with: "$1_$2",
            options: .regularExpression
        ).lowercased()
    }
}