stringz

package
v0.31.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 8, 2023 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package stringz contains string functions similar in spirit to the stdlib strings package.

Index

Constants

View Source
const (
	// DateFormat is the layout for dates (without a time component), such as 2006-01-02.
	DateFormat = "2006-01-02"

	// TimeFormat is the layout for 24-hour time (without a date component), such as 15:04:05.
	TimeFormat = "15:04:05"

	// DatetimeFormat is the layout for a date/time timestamp.
	DatetimeFormat = time.RFC3339Nano
)
View Source
const (
	// RFC3339Milli is an RFC3339 format with millisecond precision.
	RFC3339Milli = "2006-01-02T15:04:05.000Z07:00"

	// RFC3339MilliZulu is the same as RFC3339Milli, but in zulu time.
	RFC3339MilliZulu = "2006-01-02T15:04:05.000Z"

	// RFC3339Zulu is an RFC3339 format, in Zulu time.
	RFC3339Zulu = "2006-01-02T15:04:05Z"

	// ISO8601 is similar to RFC3339Milli, but doesn't have the colon
	// in the timezone offset.
	ISO8601 = "2006-01-02T15:04:05.000Z0700"

	// DateOnly is a date-only format.
	DateOnly = "2006-01-02"
)
View Source
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

func BacktickQuote(s string) string

BacktickQuote backtick-quotes (and escapes) s.

hello `world`  --> `hello ``world```

func ByteSized

func ByteSized(size int64, precision int, sep string) string

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"

func DateUTC added in v0.21.0

func DateUTC(t time.Time) string

DateUTC returns a date representation (2020-10-31) of t in UTC.

func DoubleQuote added in v0.30.0

func DoubleQuote(s string) string

DoubleQuote double-quotes (and escapes) s.

hello "world"  -->  "hello ""world"""

func FormatFloat

func FormatFloat(f float64) string

FormatFloat formats f. This method exists to provide a standard float formatting across the codebase.

func GenerateAlphaColName

func GenerateAlphaColName(n int, lower bool) string

GenerateAlphaColName returns an Excel-style column name for index n, starting with A, B, C... and continuing to AA, AB, AC, etc...

func InSlice

func InSlice(haystack []string, needle string) bool

InSlice returns true if the needle is present in the haystack.

func LineCount

func LineCount(r io.Reader, skipEmpty bool) int

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 ParseBool

func ParseBool(s string) (bool, error)

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 ParseDateOrTimestampUTC added in v0.21.0

func ParseDateOrTimestampUTC(s string) (time.Time, error)

ParseDateOrTimestampUTC attempts to parse s as either a date (see ParseUTCDate), or timestamp (see ParseTimestampUTC). The returned time is in UTC.

func ParseLocalDate added in v0.21.0

func ParseLocalDate(s string) (time.Time, error)

ParseLocalDate accepts a date string s, returning the local midnight time of that date. Arg s must in format "2006-01-02".

func ParseTimestampUTC added in v0.21.0

func ParseTimestampUTC(s string) (time.Time, error)

ParseTimestampUTC is the counterpart of TimestampUTC. It attempts to parse s first in RFC3339Milli, then time.RFC3339 format, falling back to the subtly different ISO8601 format.

func ParseUTCDate added in v0.21.0

func ParseUTCDate(s string) (time.Time, error)

ParseUTCDate accepts a date string s, returning the UTC midnight time of that date. Arg s must in format "2006-01-02".

func Plu

func Plu(s string, i int) string

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

func PrefixSlice(a []string, w string) []string

PrefixSlice returns a new slice with each element of a prefixed with w, unless a is nil, in which case nil is returned.

func RepeatJoin

func RepeatJoin(s string, count int, sep string) string

RepeatJoin returns a string consisting of count copies of s separated by sep. For example:

stringz.RepeatJoin("?", 3, ", ") == "?, ?, ?"

func Reverse

func Reverse(input string) string

Reverse reverses the input string.

func SanitizeAlphaNumeric

func SanitizeAlphaNumeric(s string, r rune) string

SanitizeAlphaNumeric replaces any non-alphanumeric runes of s with r (which is typically underscore).

a#2%3.4_ --> a_2_3_4_

func SingleQuote added in v0.30.0

func SingleQuote(s string) string

SingleQuote single-quotes (and escapes) s.

jessie's girl  -->  'jessie''s girl'

func SliceIndex

func SliceIndex(haystack []string, needle string) int

SliceIndex returns the index of needle in haystack, or -1.

func SprintJSON

func SprintJSON(value any) string

func Surround

func Surround(s, w string) string

Surround returns s prefixed and suffixed with w.

func SurroundSlice

func SurroundSlice(a []string, w string) []string

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 TimestampToDate added in v0.21.0

func TimestampToDate(s string) string

TimestampToDate takes a RFC3339Milli, ISO8601 or RFC3339 timestamp, and returns just the date component. On error, the empty string is returned.

func TimestampToRFC3339 added in v0.21.0

func TimestampToRFC3339(s string) string

TimestampToRFC3339 takes a RFC3339Milli, ISO8601 or RFC3339 timestamp, and returns RFC3339. That is, the milliseconds are dropped. On error, the empty string is returned.

func TimestampUTC added in v0.21.0

func TimestampUTC(t time.Time) string

TimestampUTC returns the RFC3339Milli representation of t in UTC.

func TrimLen added in v0.16.0

func TrimLen(s string, maxLen int) string

TrimLen returns s but with a maximum length of maxLen.

func Type added in v0.31.0

func Type(v any) string

Type returns the printed type of v.

func UUID

func UUID() string

UUID returns a new UUID string.

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

func UniqN(length int) string

UniqN returns a uniq string of length n. The first element is guaranteed to be a letter.

func UniqPrefix added in v0.16.0

func UniqPrefix(s string) string

UniqPrefix returns s with a unique prefix.

func UniqSuffix

func UniqSuffix(s string) string

UniqSuffix returns s with a unique suffix.

func UniqTableName

func UniqTableName(tbl string) string

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 ValidIdent added in v0.31.0

func ValidIdent(s string) error

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.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL