Documentation ¶
Overview ¶
Package stringz contains string functions similar in spirit to the stdlib strings package.
Index ¶
- Constants
- func BacktickQuote(s string) string
- func ByteSized(size int64, precision int, sep string) string
- func DecimalFloatOK(d decimal.Decimal) bool
- func DecimalPlaces(d decimal.Decimal) int32
- func DoubleQuote(s string) string
- func ElementsHavingPrefix(a []string, prefix string) []string
- func Ellipsify(s string, width int) string
- func EllipsifyASCII(s string, width int) string
- func ExecuteTemplate(name, tpl string, data any) (string, error)
- func FilterPrefix(prefix string, a ...string) []string
- func FormatDecimal(d decimal.Decimal) string
- func FormatFloat(f float64) string
- func GenerateAlphaColName(n int, lower bool) string
- func HasAnyPrefix(s string, prefixes ...string) bool
- func InSlice(haystack []string, needle string) bool
- func IndentLines(s, indent string) string
- func LineCount(r io.Reader, skipEmpty bool) int
- func NewTemplate(name, tpl string) (*template.Template, error)
- func ParseBool(s string) (bool, error)
- func Plu(s string, i int) string
- func PrefixSlice(a []string, prefix string) []string
- func RepeatJoin(s string, count int, sep string) string
- func Reverse(input string) string
- func SanitizeAlphaNumeric(s string, r rune) string
- func SanitizeFilename(name string) string
- func ShellEscape(s string) string
- func SingleQuote(s string) string
- func SliceIndex(haystack []string, needle string) int
- func SprintJSON(value any) string
- func Strings[E any](a []E) []string
- func StringsD[E any](a []E) []string
- func StripDoubleQuote(s string) string
- func SuffixSlice(a []string, w string) []string
- func Surround(s, w string) string
- func SurroundSlice(a []string, w string) []string
- func TrimLen(s string, maxLen int) string
- func Type(v any) string
- func TypeNames[T any](a ...T) []string
- func UUID() string
- func Uniq32() string
- func Uniq8() string
- func UniqN(length int) string
- func UniqPrefix(s string) string
- func UniqSuffix(s string) string
- func UniqTableName(tbl string) string
- func Val(i any) any
- func ValidIdent(s string) error
- func ValidTemplate(name, tpl string) error
- func VisitLines(s string, fn func(i int, line string) string) string
Constants ¶
const Redacted = "xxxxx"
Redacted is the "xxxxx" string used for redacted values, such as passwords. We use "xxxxx" instead of the arguably prettier "*****" because stdlib uses this for redacted strings.
See: url.URL.Redacted.
Variables ¶
This section is empty.
Functions ¶
func BacktickQuote ¶ added in v0.30.0
BacktickQuote backtick-quotes (and escapes) s.
hello `world` --> `hello ``world```
func ByteSized ¶
ByteSized returns a human-readable byte size, e.g. "2.1 MB", "3.0 TB", etc. TODO: replace this usage with "github.com/c2h5oh/datasize", or maybe https://github.com/docker/go-units/.
func DecimalFloatOK ¶ added in v0.45.0
DecimalFloatOK returns true if d can be stored as a float64 without losing precision.
func DecimalPlaces ¶ added in v0.45.0
DecimalPlaces returns the count of decimal places in d. That is to say, it returns the number of digits after the decimal point.
func DoubleQuote ¶ added in v0.30.0
DoubleQuote double-quotes (and escapes) s.
hello "world" --> "hello ""world"""
func ElementsHavingPrefix ¶ added in v0.37.0
ElementsHavingPrefix returns the elements of a that have prefix.
func Ellipsify ¶ added in v0.47.0
Ellipsify shortens s to a length of maxLen by cutting the middle and inserting an ellipsis rune "…".This is the actual ellipsis rune, not three periods. For very short strings, the ellipsis may be elided.
Be warned, Ellipsify may not be unicode-safe. Use at your own risk.
See also: EllipsifyASCII.
func EllipsifyASCII ¶ added in v0.47.0
EllipsifyASCII returns s but with a maximum length of maxLen, with the middle of s replaced with "...". If maxLen is a small number, the ellipsis may be shorter, e.g. a single char. This func is only tested with ASCII chars; results are not guaranteed for multibyte runes.
See also: Ellipsify.
func ExecuteTemplate ¶ added in v0.40.0
ExecuteTemplate is a convenience function that constructs and executes a text template, returning the string value.
func FilterPrefix ¶ added in v0.37.0
FilterPrefix returns a new slice containing each element of a that has prefix.
func FormatDecimal ¶ added in v0.45.0
FormatDecimal formats d with the appropriate number of decimal places as defined by d's exponent.
func FormatFloat ¶
FormatFloat formats f. This method exists to provide a standard float formatting across the codebase.
func GenerateAlphaColName ¶
GenerateAlphaColName returns an Excel-style column name for index n, starting with A, B, C... and continuing to AA, AB, AC, etc...
func HasAnyPrefix ¶ added in v0.37.0
HasAnyPrefix returns true if s has any of the prefixes.
func IndentLines ¶ added in v0.34.0
IndentLines returns a new string built from indenting each line of s.
func LineCount ¶
LineCount returns the number of lines in r. If skipEmpty is true, empty lines are skipped (a whitespace-only line is not considered empty). If r is nil or any error occurs, -1 is returned.
func NewTemplate ¶ added in v0.40.0
NewTemplate returns a new text template, with the sprig functions already loaded.
func ParseBool ¶
ParseBool is an expansion of strconv.ParseBool that also accepts variants of "yes" and "no" (which are bool representations returned by some data sources).
func Plu ¶
Plu handles the most common (English language) case of pluralization. With arg s being "row(s) col(s)", Plu returns "row col" if arg i is 1, otherwise returns "rows cols".
func PrefixSlice ¶
PrefixSlice returns a new slice with each element of a prefixed with prefix, unless a is nil, in which case nil is returned.
func RepeatJoin ¶
RepeatJoin returns a string consisting of count copies of s separated by sep. For example:
stringz.RepeatJoin("?", 3, ", ") == "?, ?, ?"
func SanitizeAlphaNumeric ¶
SanitizeAlphaNumeric replaces any non-alphanumeric runes of s with r (which is typically underscore).
a#2%3.4_ --> a_2_3_4_
func SanitizeFilename ¶ added in v0.47.0
SanitizeFilename returns a sanitized version of filename. The supplied value should be the base file name, not a path.
func ShellEscape ¶ added in v0.40.0
ShellEscape escapes s, making it safe to pass to a shell. Note that empty string will be returned as two single quotes.
func SingleQuote ¶ added in v0.30.0
SingleQuote single-quotes (and escapes) s.
jessie's girl --> 'jessie''s girl'
func SliceIndex ¶
SliceIndex returns the index of needle in haystack, or -1.
func SprintJSON ¶
func Strings ¶ added in v0.32.0
Strings returns a []string for a. If a is empty or nil, an empty slice is returned. A nil element is treated as empty string.
func StringsD ¶ added in v0.32.0
StringsD works like Strings, but it first dereferences every element of a. Thus if a is []any{*string, *int}, it is treated as if it were []any{string, int}.
func StripDoubleQuote ¶ added in v0.38.0
StripDoubleQuote strips double quotes from s, or returns s unchanged if it is not correctly double-quoted.
func SuffixSlice ¶ added in v0.33.0
SuffixSlice returns a new slice containing each element of a with suffix w. If a is nil, nil is returned.
func SurroundSlice ¶
SurroundSlice returns a new slice with each element of a prefixed and suffixed with w, unless a is nil, in which case nil is returned.
func TrimLen ¶ added in v0.16.0
TrimLen returns s but with a maximum length of maxLen. This func is only tested with ASCII chars; results are not guaranteed for multibyte runes.
func TypeNames ¶ added in v0.47.0
TypeNames returns the go type of each element of a, as rendered by fmt "%T".
func Uniq32 ¶
func Uniq32() string
Uniq32 returns a UUID-like string that only contains alphanumeric chars. The result has length 32. The first element is guaranteed to be a letter.
func Uniq8 ¶
func Uniq8() string
Uniq8 returns a UUID-like string that only contains alphanumeric chars. The result has length 8. The first element is guaranteed to be a letter.
func UniqN ¶ added in v0.16.0
UniqN returns a uniq string of length n. The first element is guaranteed to be a letter.
func UniqPrefix ¶ added in v0.16.0
UniqPrefix returns s with a unique prefix.
func UniqTableName ¶
UniqTableName returns a new lower-case table name based on tbl, with a unique suffix, and a maximum length of 63. This value of 63 is chosen because it's less than the maximum table name length for Postgres, SQL Server, SQLite and MySQL.
func Val ¶ added in v0.32.0
Val returns the fully dereferenced value of i. If i is nil, nil is returned. If i has type *(*string), Val(i) returns string.
TODO: Should Val be renamed to Deref?
func ValidIdent ¶ added in v0.31.0
ValidIdent returns an error if s is not a valid identifier. And identifier must start with a letter, and may contain letters, numbers, and underscore.
func ValidTemplate ¶ added in v0.40.0
ValidTemplate is a convenience wrapper around NewTemplate. It returns an error if the tpl is not a valid text template.
Types ¶
This section is empty.