# str import "github.com/mgutz/str" Package str is a comprehensive set of string functions to build more Go awesomeness. Str complements Go's standard packages and does not duplicate functionality found in `strings` or `strconv`. Str is based on plain functions instead of object-based methods, consistent with Go standard string packages. str.Between("foo", "", "") == "foo" Str supports pipelining instead of chaining s := str.Pipe("\nabcdef\n", Clean, BetweenF("a", "f"), ChompLeftF("bc")) User-defined filters can be added to the pipeline by inserting a function or closure that returns a function with this signature func(string) string ### Index * [Variables](#variables) * [func Between](#func [godoc](https://godoc.org/github.com/mgutz/str) between) * [func BetweenF](#func--betweenf) * [func Camelize](#func--camelize) * [func Capitalize](#func--capitalize) * [func CharAt](#func--charat) * [func CharAtF](#func--charatf) * [func ChompLeft](#func--chompleft) * [func ChompLeftF](#func--chompleftf) * [func ChompRight](#func--chompright) * [func ChompRightF](#func--chomprightf) * [func Classify](#func--classify) * [func ClassifyF](#func--classifyf) * [func Clean](#func--clean) * [func Dasherize](#func--dasherize) * [func DecodeHTMLEntities](#func--decodehtmlentities) * [func EnsurePrefix](#func--ensureprefix) * [func EnsurePrefixF](#func--ensureprefixf) * [func EnsureSuffix](#func--ensuresuffix) * [func EnsureSuffixF](#func--ensuresuffixf) * [func EscapeHTML](#func--escapehtml) * [func Humanize](#func--humanize) * [func Iif](#func--iif) * [func IndexOf](#func--indexof) * [func IsAlpha](#func--isalpha) * [func IsAlphaNumeric](#func--isalphanumeric) * [func IsEmpty](#func--isempty) * [func IsLower](#func--islower) * [func IsNumeric](#func--isnumeric) * [func IsUpper](#func--isupper) * [func Left](#func--left) * [func LeftF](#func--leftf) * [func LeftOf](#func--leftof) * [func Letters](#func--letters) * [func Lines](#func--lines) * [func Map](#func--map) * [func Match](#func--match) * [func Pad](#func--pad) * [func PadF](#func--padf) * [func PadLeft](#func--padleft) * [func PadLeftF](#func--padleftf) * [func PadRight](#func--padright) * [func PadRightF](#func--padrightf) * [func Pipe](#func--pipe) * [func QuoteItems](#func--quoteitems) * [func ReplaceF](#func--replacef) * [func ReplacePattern](#func--replacepattern) * [func ReplacePatternF](#func--replacepatternf) * [func Reverse](#func--reverse) * [func Right](#func--right) * [func RightF](#func--rightf) * [func RightOf](#func--rightof) * [func SetTemplateDelimiters](#func--settemplatedelimiters) * [func Slice](#func--slice) * [func SliceContains](#func--slicecontains) * [func SliceF](#func--slicef) * [func SliceIndexOf](#func--sliceindexof) * [func Slugify](#func--slugify) * [func StripPunctuation](#func--strippunctuation) * [func StripTags](#func--striptags) * [func Substr](#func--substr) * [func SubstrF](#func--substrf) * [func Template](#func--template) * [func TemplateDelimiters](#func--templatedelimiters) * [func TemplateWithDelimiters](#func--templatewithdelimiters) * [func ToArgv](#func--toargv) * [func ToBool](#func--tobool) * [func ToBoolOr](#func--toboolor) * [func ToFloat32Or](#func--tofloat32or) * [func ToFloat64Or](#func--tofloat64or) * [func ToIntOr](#func--tointor) * [func Underscore](#func--underscore) * [func UnescapeHTML](#func--unescapehtml) * [func WrapHTML](#func--wraphtml) * [func WrapHTMLF](#func--wraphtmlf) #### Variables ```go var ToFloatOr = ToFloat64Or ``` ToFloatOr parses as a float64 or returns defaultValue. ```go var Verbose = false ``` Verbose flag enables console output for those functions that have counterparts in Go's excellent stadard packages. #### func [Between](#between) ```go func Between(s, left, right string) string ``` Between extracts a string between left and right strings. #### func [BetweenF](#betweenf) ```go func BetweenF(left, right string) func(string) string ``` BetweenF is the filter form for Between. #### func [Camelize](#camelize) ```go func Camelize(s string) string ``` Camelize return new string which removes any underscores or dashes and convert a string into camel casing. #### func [Capitalize](#capitalize) ```go func Capitalize(s string) string ``` Capitalize uppercases the first char of s and lowercases the rest. #### func [CharAt](#charat) ```go func CharAt(s string, index int) string ``` CharAt returns a string from the character at the specified position. #### func [CharAtF](#charatf) ```go func CharAtF(index int) func(string) string ``` CharAtF is the filter form of CharAt. #### func [ChompLeft](#chompleft) ```go func ChompLeft(s, prefix string) string ``` ChompLeft removes prefix at the start of a string. #### func [ChompLeftF](#chompleftf) ```go func ChompLeftF(prefix string) func(string) string ``` ChompLeftF is the filter form of ChompLeft. #### func [ChompRight](#chompright) ```go func ChompRight(s, suffix string) string ``` ChompRight removes suffix from end of s. #### func [ChompRightF](#chomprightf) ```go func ChompRightF(suffix string) func(string) string ``` ChompRightF is the filter form of ChompRight. #### func [Classify](#classify) ```go func Classify(s string) string ``` Classify returns a camelized string with the first letter upper cased. #### func [ClassifyF](#classifyf) ```go func ClassifyF(s string) func(string) string ``` ClassifyF is the filter form of Classify. #### func [Clean](#clean) ```go func Clean(s string) string ``` Clean compresses all adjacent whitespace to a single space and trims s. #### func [Dasherize](#dasherize) ```go func Dasherize(s string) string ``` Dasherize converts a camel cased string into a string delimited by dashes. #### func [DecodeHTMLEntities](#decodehtmlentities) ```go func DecodeHTMLEntities(s string) string ``` DecodeHTMLEntities decodes HTML entities into their proper string representation. DecodeHTMLEntities is an alias for html.UnescapeString #### func [EnsurePrefix](#ensureprefix) ```go func EnsurePrefix(s, prefix string) string ``` EnsurePrefix ensures s starts with prefix. #### func [EnsurePrefixF](#ensureprefixf) ```go func EnsurePrefixF(prefix string) func(string) string ``` EnsurePrefixF is the filter form of EnsurePrefix. #### func [EnsureSuffix](#ensuresuffix) ```go func EnsureSuffix(s, suffix string) string ``` EnsureSuffix ensures s ends with suffix. #### func [EnsureSuffixF](#ensuresuffixf) ```go func EnsureSuffixF(suffix string) func(string) string ``` EnsureSuffixF is the filter form of EnsureSuffix. #### func [EscapeHTML](#escapehtml) ```go func EscapeHTML(s string) string ``` EscapeHTML is alias for html.EscapeString. #### func [Humanize](#humanize) ```go func Humanize(s string) string ``` Humanize transforms s into a human friendly form. #### func [Iif](#iif) ```go func Iif(condition bool, truthy string, falsey string) string ``` Iif is short for immediate if. If condition is true return truthy else falsey. #### func [IndexOf](#indexof) ```go func IndexOf(s string, needle string, start int) int ``` IndexOf finds the index of needle in s starting from start. #### func [IsAlpha](#isalpha) ```go func IsAlpha(s string) bool ``` IsAlpha returns true if a string contains only letters from ASCII (a-z,A-Z). Other letters from other languages are not supported. #### func [IsAlphaNumeric](#isalphanumeric) ```go func IsAlphaNumeric(s string) bool ``` IsAlphaNumeric returns true if a string contains letters and digits. #### func [IsEmpty](#isempty) ```go func IsEmpty(s string) bool ``` IsEmpty returns true if the string is solely composed of whitespace. #### func [IsLower](#islower) ```go func IsLower(s string) bool ``` IsLower returns true if s comprised of all lower case characters. #### func [IsNumeric](#isnumeric) ```go func IsNumeric(s string) bool ``` IsNumeric returns true if a string contains only digits from 0-9. Other digits not in Latin (such as Arabic) are not currently supported. #### func [IsUpper](#isupper) ```go func IsUpper(s string) bool ``` IsUpper returns true if s contains all upper case chracters. #### func [Left](#left) ```go func Left(s string, n int) string ``` Left returns the left substring of length n. #### func [LeftF](#leftf) ```go func LeftF(n int) func(string) string ``` LeftF is the filter form of Left. #### func [LeftOf](#leftof) ```go func LeftOf(s string, needle string) string ``` LeftOf returns the substring left of needle. #### func [Letters](#letters) ```go func Letters(s string) []string ``` Letters returns an array of runes as strings so it can be indexed into. #### func [Lines](#lines) ```go func Lines(s string) []string ``` Lines convert windows newlines to unix newlines then convert to an Array of lines. #### func [Map](#map) ```go func Map(arr []string, iterator func(string) string) []string ``` Map maps an array's iitem through an iterator. #### func [Match](#match) ```go func Match(s, pattern string) bool ``` Match returns true if patterns matches the string #### func [Pad](#pad) ```go func Pad(s, c string, n int) string ``` Pad pads string s on both sides with c until it has length of n. #### func [PadF](#padf) ```go func PadF(c string, n int) func(string) string ``` PadF is the filter form of Pad. #### func [PadLeft](#padleft) ```go func PadLeft(s, c string, n int) string ``` PadLeft pads s on left side with c until it has length of n. #### func [PadLeftF](#padleftf) ```go func PadLeftF(c string, n int) func(string) string ``` PadLeftF is the filter form of PadLeft. #### func [PadRight](#padright) ```go func PadRight(s, c string, n int) string ``` PadRight pads s on right side with c until it has length of n. #### func [PadRightF](#padrightf) ```go func PadRightF(c string, n int) func(string) string ``` PadRightF is the filter form of Padright #### func [Pipe](#pipe) ```go func Pipe(s string, funcs ...func(string) string) string ``` Pipe pipes s through one or more string filters. #### func [QuoteItems](#quoteitems) ```go func QuoteItems(arr []string) []string ``` QuoteItems quotes all items in array, mostly for debugging. #### func [ReplaceF](#replacef) ```go func ReplaceF(old, new string, n int) func(string) string ``` ReplaceF is the filter form of strings.Replace. #### func [ReplacePattern](#replacepattern) ```go func ReplacePattern(s, pattern, repl string) string ``` ReplacePattern replaces string with regexp string. ReplacePattern returns a copy of src, replacing matches of the Regexp with the replacement string repl. Inside repl, $ signs are interpreted as in Expand, so for instance $1 represents the text of the first submatch. #### func [ReplacePatternF](#replacepatternf) ```go func ReplacePatternF(pattern, repl string) func(string) string ``` ReplacePatternF is the filter form of ReplaceRegexp. #### func [Reverse](#reverse) ```go func Reverse(s string) string ``` Reverse a string #### func [Right](#right) ```go func Right(s string, n int) string ``` Right returns the right substring of length n. #### func [RightF](#rightf) ```go func RightF(n int) func(string) string ``` RightF is the Filter version of Right. #### func [RightOf](#rightof) ```go func RightOf(s string, prefix string) string ``` RightOf returns the substring to the right of prefix. #### func [SetTemplateDelimiters](#settemplatedelimiters) ```go func SetTemplateDelimiters(opening, closing string) ``` SetTemplateDelimiters sets the delimiters for Template function. Defaults to "{{" and "}}" #### func [Slice](#slice) ```go func Slice(s string, start, end int) string ``` Slice slices a string. If end is negative then it is the from the end of the string. #### func [SliceContains](#slicecontains) ```go func SliceContains(slice []string, val string) bool ``` SliceContains determines whether val is an element in slice. #### func [SliceF](#slicef) ```go func SliceF(start, end int) func(string) string ``` SliceF is the filter for Slice. #### func [SliceIndexOf](#sliceindexof) ```go func SliceIndexOf(slice []string, val string) int ``` SliceIndexOf gets the indx of val in slice. Returns -1 if not found. #### func [Slugify](#slugify) ```go func Slugify(s string) string ``` Slugify converts s into a dasherized string suitable for URL segment. #### func [StripPunctuation](#strippunctuation) ```go func StripPunctuation(s string) string ``` StripPunctuation strips puncation from string. #### func [StripTags](#striptags) ```go func StripTags(s string, tags ...string) string ``` StripTags strips all of the html tags or tags specified by the parameters #### func [Substr](#substr) ```go func Substr(s string, index int, n int) string ``` Substr returns a substring of s starting at index of length n. #### func [SubstrF](#substrf) ```go func SubstrF(index, n int) func(string) string ``` SubstrF is the filter form of Substr. #### func [Template](#template) ```go func Template(s string, values map[string]interface{}) string ``` Template is a string template which replaces template placeholders delimited by "{{" and "}}" with values from map. The global delimiters may be set with SetTemplateDelimiters. #### func [TemplateDelimiters](#templatedelimiters) ```go func TemplateDelimiters() (opening string, closing string) ``` TemplateDelimiters is the getter for the opening and closing delimiters for Template. #### func [TemplateWithDelimiters](#templatewithdelimiters) ```go func TemplateWithDelimiters(s string, values map[string]interface{}, opening, closing string) string ``` TemplateWithDelimiters is string template with user-defineable opening and closing delimiters. #### func [ToArgv](#toargv) ```go func ToArgv(s string) []string ``` ToArgv converts string s into an argv for exec. #### func [ToBool](#tobool) ```go func ToBool(s string) bool ``` ToBool fuzzily converts truthy values. #### func [ToBoolOr](#toboolor) ```go func ToBoolOr(s string, defaultValue bool) bool ``` ToBoolOr parses s as a bool or returns defaultValue. #### func [ToFloat32Or](#tofloat32or) ```go func ToFloat32Or(s string, defaultValue float32) float32 ``` ToFloat32Or parses as a float32 or returns defaultValue on error. #### func [ToFloat64Or](#tofloat64or) ```go func ToFloat64Or(s string, defaultValue float64) float64 ``` ToFloat64Or parses s as a float64 or returns defaultValue. #### func [ToIntOr](#tointor) ```go func ToIntOr(s string, defaultValue int) int ``` ToIntOr parses s as an int or returns defaultValue. #### func [Underscore](#underscore) ```go func Underscore(s string) string ``` Underscore returns converted camel cased string into a string delimited by underscores. #### func [UnescapeHTML](#unescapehtml) ```go func UnescapeHTML(s string) string ``` UnescapeHTML is an alias for html.UnescapeString. #### func [WrapHTML](#wraphtml) ```go func WrapHTML(s string, tag string, attrs map[string]string) string ``` WrapHTML wraps s within HTML tag having attributes attrs. Note, WrapHTML does not escape s value. #### func [WrapHTMLF](#wraphtmlf) ```go func WrapHTMLF(tag string, attrs map[string]string) func(string) string ``` WrapHTMLF is the filter form of WrapHTML.