Strings
Introduction
Goravel provides a fluent string manipulation library that allows you to easily manipulate strings. Fluent Strings allows you to combine multiple string operations through method chaining, where most of the methods returns an instance of support/str.String, letting you chain additional methods. To get the final string value after applying the chained operations, you can call the String method, which returns the underlying string value.
import "github.com/goravel/framework/support/str"
str.Of(" Goravel ").Trim().Lower().UpperFirst().String() // "Goravel"Available Methods
Of
The Of method creates a new fluent string instance from a given string.
import "github.com/goravel/framework/support/str"
str.Of("Goravel")After
The After method returns the portion of a string that appears after a specified value. If the value is an empty string or does not exist within the original string, the full string is returned.
import "github.com/goravel/framework/support/str"
str.Of("Hello World!").After("Hello").String() // " World!"AfterLast
The AfterLast method returns the portion of a string that appears after the last occurrence of a specified value. If the value is an empty string or does not exist within the original string, the full string is returned.
import "github.com/goravel/framework/support/str"
str.Of("docs.goravel.dev").AfterLast(".").String() // "dev"Append
The Append method appends the specified value to the end of the string.
import "github.com/goravel/framework/support/str"
str.Of("Bowen").Append(" Han").String() // "Bowen Han"Basename
The Basename method returns the trailing name component of a path, optionally removing a specified suffix from the base name.
import "github.com/goravel/framework/support/str"
str.Of("framework/support/str").Basename().String() // "str"
str.Of("framework/support/str.go").Basename(".go").String() // "str"Before
The Before method returns the portion of a string that appears before a specified value. If the value is an empty string or does not exist within the original string, the full string is returned.
import "github.com/goravel/framework/support/str"
str.Of("Hello World!").Before("World").String() // "Hello "BeforeLast
The BeforeLast method returns the portion of a string that appears before the last occurrence of a specified value. If the value is an empty string or does not exist within the original string, the full string is returned.
import "github.com/goravel/framework/support/str"
str.Of("docs.goravel.dev").BeforeLast(".").String() // "docs.goravel"Between
The Between method returns the portion of a string between two given values.
import "github.com/goravel/framework/support/str"
str.Of("[Hello] World!").Between("[", "]").String() // "Hello"BetweenFirst
The BetweenFirst method returns the portion of a string between the first occurrence of two given values.
import "github.com/goravel/framework/support/str"
str.Of("[Hello] [World]!").BetweenFirst("[", "]").String() // "Hello"Camel
The Camel method converts the string to camelCase.
import "github.com/goravel/framework/support/str"
str.Of("hello_world").Camel().String() // "helloWorld"CharAt
The CharAt method returns the character at the given index. If the index is out of bounds, an empty string will be returned.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").CharAt(1) // "o"ChopEnd
The ChopEnd method removes the given value(s) from the end of the string.
import "github.com/goravel/framework/support/str"
str.Of("https://goravel.com").ChopEnd(".dev", ".com").String() // https://goravelChopStart
The ChopStart method removes the given value(s) from the start of the string.
import "github.com/goravel/framework/support/str"
str.Of("https://goravel.dev").ChopStart("http://", "https://").String() // goravel.devContains
The Contains method determines if the given string contains the given value. The method is case-sensitive. If multiple values are provided, it will return true if the string contains any of the values.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").Contains("Gor") // true
str.Of("Hello World").Contains("Gor", "Hello") // trueContainsAll
The ContainsAll method determines if the given string contains all of the given values. The method is case-sensitive.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").ContainsAll("Hello", "World") // true
str.Of("Hello World").ContainsAll("Hello", "Gor") // falseDirname
The Dirname method returns the parent portion of a path.
import "github.com/goravel/framework/support/str"
str.Of("framework/support/str").Dirname().String() // "framework/support"Optionally, you may provide the directory level to trim from the path.
import "github.com/goravel/framework/support/str"
str.Of("framework/support/str").Dirname(2).String() // "framework"EndsWith
The EndsWith method determines if the given string ends with the given value. The method is case-sensitive.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").EndsWith("vel") // trueYou may pass multiple values to the method to determine if the string ends with any of the values.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").EndsWith("vel", "lie") // trueExactly
The Exactly method determines if the given string is exactly equal to the given value. The method is case-sensitive.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").Exactly("Goravel") // trueExcept
The Except method extracts an excerpt from the string that matches the first occurrence of the given value.
import "github.com/goravel/framework/support/str"
str.Of("This is a beautiful morning").
Excerpt("beautiful", str.ExcerptOption{
Radius: 5,
}).String() // "...is a beautiful morn...Additionally, you may use Omission option to change the string that is used to indicate the excerpt.
import "github.com/goravel/framework/support/str"
str.Of("This is a beautiful morning").
Excerpt("beautiful", str.ExcerptOption{
Radius: 5,
Omission: "(...)"
}).String() // "(...)is a beautiful morn(...)"Explode
The Explode method splits the string into an array of strings using the given delimiter.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").Explode(" ") // []string{"Hello", "World"}Finish
The Finish method ensures that the given string ends with the given value. If the string already ends with the value, it will not be added again.
import "github.com/goravel/framework/support/str"
str.Of("framework").Finish("/").String() // "framework/"
str.Of("framework/").Finish("/").String() // "framework/"Headline
The Headline method converts the string to a headline.
import "github.com/goravel/framework/support/str"
str.Of("bowen_han").Headline().String() // "Bowen Han"
str.Of("HelloWorld").Headline().String() // "Hello World"Is
The Is method determines if the given string matches the given pattern. The method is case-sensitive.
import "github.com/goravel/framework/support/str"
str.Of("foo123").Is("bar*", "baz*", "foo*") // trueIsEmpty
The IsEmpty method determines if the given string is empty.
import "github.com/goravel/framework/support/str"
str.Of("").IsEmpty() // trueIsNotEmpty
The IsNotEmpty method determines if the given string is not empty.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").IsNotEmpty() // trueIsAscii
The IsAscii method determines if the given string contains only ASCII characters.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").IsAscii() // true
str.Of("你好").IsAscii() // falseIsSlice
The IsSlice method determines if the given string is a slice.
import "github.com/goravel/framework/support/str"
str.Of(`[{"name": "John"}, {"name": "Alice"}]`).IsSlice() // true
str.Of(`{"name": "John"}`).IsSlice() // falseIsMap
The IsMap method determines if the given string is a map.
import "github.com/goravel/framework/support/str"
str.Of(`{"name": "John"}`).IsMap() // true
str.Of(`[{"name": "John"}, {"name": "Alice"}]`).IsMap() // falseIsUlid
The IsUlid method determines if the given string is a ULID.
import "github.com/goravel/framework/support/str"
str.Of("01E5Z6Z1Z6Z1Z6Z1Z6Z1Z6Z1Z6").IsUlid() // true
str.Of("krishan").IsUlid() // falseIsUuid
The IsUuid method determines if the given string is a UUID.
import "github.com/goravel/framework/support/str"
str.Of("550e8400-e29b-41d4-a716-446655440000").IsUuid() // true
str.Of("krishan").IsUuid() // falseKebab
The Kebab method converts the string to kebab-case.
import "github.com/goravel/framework/support/str"
str.Of("GoravelFramework").Kebab().String() // "goravel-framework"LcFirst
The LcFirst method converts the first character of the string to lowercase.
import "github.com/goravel/framework/support/str"
str.Of("Goravel Framework").LcFirst().String() // "goravel Framework"Length
The Length method returns the length of the string.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").Length() // 7Limit
The Limit method truncates the string to the given length.
import "github.com/goravel/framework/support/str"
str.Of("This is a beautiful morning").Limit(7).String() // "This is..."Optionally, you may provide the second argument to change the string that is used to indicate the truncation.
import "github.com/goravel/framework/support/str"
str.Of("This is a beautiful morning").Limit(7, " (****)").String() // "This is (****)"Lower
The Lower method converts the string to lowercase.
import "github.com/goravel/framework/support/str"
str.Of("GORAVEL").Lower().String() // "goravel"LTrim
The LTrim method trims the left side of the string.
import "github.com/goravel/framework/support/str"
str.Of(" Goravel ").LTrim().String() // "Goravel "
str.Of("/framework/").LTrim("/").String() // "framework/"Mask
The Mask method masks the string with the given mask character.
import "github.com/goravel/framework/support/str"
str.Of("krishan@email.com").Mask("*", 3).String() // "kri**************"If needed, you may provide negative number to mask method which instruct the method to begin masking from the end of the string.
import "github.com/goravel/framework/support/str"
str.Of("krishan@email.com").Mask("*", -13, 3).String() // "kris***@email.com"
str.Of("krishan@email.com").Mask("*", -13).String() // "kris**************"Match
The Match method determines if the given string matches the given regular expression.
import "github.com/goravel/framework/support/str"
str.Of("This is a (test) string").Match(`\([^)]+\)`).String() // (test)MatchAll
The MatchAll method determines if the given string matches all of the given regular expressions.
import "github.com/goravel/framework/support/str"
str.Of("abc123def456def").MatchAll(`\d+`) // []string{"123", "456"}IsMatch
The IsMatch method determines if the given string matches (any of) the given regular expression.
import "github.com/goravel/framework/support/str"
str.Of("Hello, Goravel!").IsMatch(`(?i)goravel`, `goravel!(.*)`) // trueNewLine
The NewLine method appends a newline character to the string.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").NewLine(2).Append("Framework").String() // "Goravel\n\nFramework"PadBoth
The PadBoth method pads both sides of the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello").PadBoth(10, "_").String() // "__Hello___"PadLeft
The PadLeft method pads the left side of the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello").PadLeft(10, "_").String() // "_____Hello"PadRight
The PadRight method pads the right side of the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello").PadRight(10, "_").String() // "Hello_____"Pipe
The Pipe method allows you to transform the string using a given closure.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").Pipe(func(s string) string {
return s + " Framework"
}).String() // "Goravel Framework"Prepend
The Prepend method prepends the given value to the string.
import "github.com/goravel/framework/support/str"
str.Of("Framework").Prepend("Goravel ").String() // "Goravel Framework"Remove
The Remove method removes the given value(s) from the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").Remove("World").String() // "Hello "
str.Of("Hello World").Remove("World", "Hello").String() // " "Repeat
The Repeat method repeats the string a given number of times.
import "github.com/goravel/framework/support/str"
str.Of("a").Repeat(2).String() // "aa"Replace
The Replace method replaces the given value in the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").Replace("World", "Krishan").String() // "Hello Krishan"By default, the Replace method is case-sensitive. If you would like the method to be case-insensitive, you may pass false as the third argument.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").Replace("world", "Krishan", false).String() // "Hello Krishan"ReplaceEnd
The ReplaceEnd method replaces the last occurrence of the given value in the string only if it is at the end of the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").ReplaceEnd("World", "Goravel").String() // "Hello Goravel"
str.Of("Hello World").ReplaceEnd("Hello", "Goravel").String() // "Hello World"ReplaceFirst
The ReplaceFirst method replaces the first occurrence of the given value in the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").ReplaceFirst("World", "Goravel").String() // "Hello Goravel"ReplaceLast
The ReplaceLast method replaces the last occurrence of the given value in the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").ReplaceLast("World", "Goravel").String() // "Hello Goravel"ReplaceMatches
The ReplaceMatches method replaces the given regular expression matches in the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello, Goravel!").ReplaceMatches(`goravel!(.*)`, "Krishan") // "Hello, Krishan!"ReplaceStart
The ReplaceStart method replaces the first occurrence of the given value in the string only if it is at the start of the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").ReplaceStart("Hello", "Goravel").String() // "Goravel World"
str.Of("Hello World").ReplaceStart("World", "Goravel").String() // "Hello World"RTrim
The RTrim method trims the right side of the string.
import "github.com/goravel/framework/support/str"
str.Of(" Goravel ").RTrim().String() // " Goravel"
str.Of("/framework/").RTrim("/").String() // "/framework"Snake
The Snake method converts the string to snake_case.
import "github.com/goravel/framework/support/str"
str.Of("GoravelFramework").Snake().String() // "goravel_framework"Split
The Split method splits the string into an array of strings using the given delimiter.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").Split(" ") // []string{"Hello", "World"}Squish
The Squish method replaces consecutive whitespace characters with a single space.
import "github.com/goravel/framework/support/str"
str.Of("Hello World").Squish().String() // "Hello World"Start
The Start method adds a single instance of the given value to the beginning of the string if it does not already start with the value.
import "github.com/goravel/framework/support/str"
str.Of("framework").Start("/").String() // "/framework"
str.Of("/framework").Start("/").String() // "/framework"StartsWith
The StartsWith method determines if the given string starts with (any) given value(s). The method is case-sensitive.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").StartsWith("Gor") // true
str.Of("Hello World").StartsWith("Gor", "Hello") // trueString
The String method returns the string.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").String() // "Goravel"Studly
The Studly method converts the string to StudlyCase.
import "github.com/goravel/framework/support/str"
str.Of("goravel_framework").Studly().String() // "GoravelFramework"Substr
The Substr method returns the portion of the string starting at the given index and continuing for the given length.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").Substr(1, 3) // "ora"Swap
The Swap method swaps multiple values in the string.
import "github.com/goravel/framework/support/str"
str.Of("Golang is awesome").Swap(map[string]string{
"Golang": "Go",
"awesome": "excellent",
}).String() // "Go is excellent"Tap
The Tap method passes the string to the given closure and returns the string.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").Tap(func(s string) {
fmt.Println(s)
}).String() // "Goravel"Test
The Test method determines if the given string matches the given regular expression.
import "github.com/goravel/framework/support/str"
str.Of("Hello, Goravel!").Test(`goravel!(.*)`) // trueTitle
The Title method converts the string to Title Case.
import "github.com/goravel/framework/support/str"
str.Of("goravel framework").Title().String() // "Goravel Framework"Trim
The Trim method trims the string.
import "github.com/goravel/framework/support/str"
str.Of(" Goravel ").Trim().String() // "Goravel"
str.Of("/framework/").Trim("/").String() // "framework"UcFirst
The UcFirst method converts the first character of the string to uppercase.
import "github.com/goravel/framework/support/str"
str.Of("goravel framework").UcFirst().String() // "Goravel framework"UcSplit
The UcSplit method splits the string into an array of strings using uppercase characters.
import "github.com/goravel/framework/support/str"
str.Of("GoravelFramework").UcSplit() // []string{"Goravel", "Framework"}Unless
The Unless method passes the string to the given closure and returns the string if the given condition is false.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").Unless(func(s *String) bool {
return false
}, func(s *String) *String {
return Of("Fallback Applied")
}).String() // "Fallback Applied"Upper
The Upper method converts the string to uppercase.
import "github.com/goravel/framework/support/str"
str.Of("goravel").Upper().String() // "GORAVEL"When
The When method passes the string to the given closure and returns the string if the given condition is true.
import "github.com/goravel/framework/support/str"
str.Of("Bowen").When(true, func(s *str.String) *str.String {
return s.Append(" Han")
}).String() // "Bowen Han"If necessary, you may provide the third argument to the When method which is a closure that will be executed when the condition is false.
WhenContains
The WhenContains method passes the string to the given closure and returns the string if the given string contains the given value.
import "github.com/goravel/framework/support/str"
str.Of("Hello Bowen").WhenContains("Hello", func(s *str.String) *str.String {
return s.Append(" Han")
}).String() // "Hello Bowen Han"If necessary, you may provide the third argument to the WhenContains method which is a closure that will be executed when the string does not contain the given value.
WhenContainsAll
The WhenContainsAll method passes the string to the given closure and returns the string if the given string contains all of the given values.
import "github.com/goravel/framework/support/str"
str.Of("Hello Bowen").WhenContainsAll([]string{"Hello", "Bowen"}, func(s *str.String) *str.String {
return s.Append(" Han")
}).String() // "Hello Bowen Han"If necessary, you may provide the third argument to the WhenContainsAll method which is a closure that will be executed when the string does not contain all the given values.
WhenEmpty
The WhenEmpty method passes the string to the given closure and returns the string if the given string is empty.
import "github.com/goravel/framework/support/str"
str.Of("").WhenEmpty(func(s *str.String) *str.String {
return s.Append("Goravel")
}).String() // "Goravel"WhenIsAscii
The WhenIsAscii method passes the string to the given closure and returns the string if the given string contains only ASCII characters.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").WhenIsAscii(func(s *str.String) *str.String {
return s.Append(" Framework")
}).String() // "Goravel Framework"
str.Of("你好").WhenIsAscii(func(s *str.String) *str.String {
return s.Append(" Framework")
}).String() // "你好"WhenNotEmpty
The WhenNotEmpty method passes the string to the given closure and returns the string if the given string is not empty.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").WhenNotEmpty(func(s *str.String) *str.String {
return s.Append(" Framework")
}).String() // "Goravel Framework"WhenStartsWith
The WhenStartsWith method passes the string to the given closure and returns the string if the given string starts with the given value.
import "github.com/goravel/framework/support/str"
str.Of("hello world").WhenStartsWith("hello", func(s *str.String) *str.String {
return s.Title()
}).String() // "Hello World"WhenEndsWith
The WhenEndsWith method passes the string to the given closure and returns the string if the given string ends with the given value.
import "github.com/goravel/framework/support/str"
str.Of("hello world").WhenEndsWith("world", func(s *str.String) *str.String {
return s.Title()
}).String() // "Hello World"WhenExactly
The WhenExactly method passes the string to the given closure and returns the string if the given string is exactly equal to the given value.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").WhenExactly("Goravel", func(s *str.String) *str.String {
return s.Append(" Framework")
}).String() // "Goravel Framework"WhenNotExactly
The WhenNotExactly method passes the string to the given closure and returns the string if the given string is not exactly equal to the given value.
import "github.com/goravel/framework/support/str"
str.Of("Goravel").WhenNotExactly("Goravel", func(s *str.String) *str.String {
return s.Append(" Framework")
}).String() // "Goravel"WhenIs
The WhenIs method passes the string to the given closure and returns the string if the given string matches the given pattern.
import "github.com/goravel/framework/support/str"
str.Of("foo/bar").WhenIs("foo/*", func(s *str.String) *str.String {
return s.Append("/baz")
}).String() // "foo/bar/baz"WhenIsUlid
The WhenIsUlid method passes the string to the given closure and returns the string if the given string is a ULID.
import "github.com/goravel/framework/support/str"
str.Of("01E5Z6Z1Z6Z1Z6Z1Z6Z1Z6Z1Z6").WhenIsUlid(func(s *str.String) *str.String {
return s.Substr(0, 10)
}).String() // "01E5Z6Z1Z6"WhenIsUuid
The WhenIsUuid method passes the string to the given closure and returns the string if the given string is a UUID.
import "github.com/goravel/framework/support/str"
str.Of("550e8400-e29b-41d4-a716-446655440000").WhenIsUuid(func(s *str.String) *str.String {
return s.Substr(0, 8)
}).String() // "550e8400"WhenTest
The WhenTest method passes the string to the given closure and returns the string if the given string matches the given regular expression.
import "github.com/goravel/framework/support/str"
str.Of("goravel framework").WhenTest(`goravel(.*)`, func(s *str.String) *str.String {
return s.Append(" is awesome")
}).String() // "goravel framework is awesome"WordCount
The WordCount method returns the number of words in the string.
import "github.com/goravel/framework/support/str"
str.Of("Hello, World!").WordCount() // 2Words
The Words method limits the number of words in the string. If necessary, you may provide the second argument to change the string that is used to indicate the truncation.
import "github.com/goravel/framework/support/str"
str.Of("Hello, World!").Words(1) // "Hello..."
str.Of("Hello, World!").Words(1, " (****)") // "Hello (****)"