C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Argument 1: This is the string we want to perform replacements upon. The strings.Replace func returns a modified version of this string.
Argument 2, 3: The second 2 arguments are the before and after strings. We want to exchange "cat" with "dog."
Argument 4: The final argument is the occurrence count to replace. We pass -1 as the occurrence count, so all instances are replaced.
Golang program that uses strings.Replace method
package main
import (
"fmt"
"strings"
)
func main() {
value := "Your cat is cute"
fmt.Println(value)
// Replace the "cat" with a "dog."
result := strings.Replace(value, "cat", "dog", -1)
fmt.Println(result)
}
Output
Your cat is cute
Your dog is cute
Tip: Use the value -1 to mean "global replace" and a positive integer to replace a certain number of matches.
Golang program that uses Replace, count argument
package main
import (
"fmt"
"strings"
)
func main() {
value := "bird bird bird"
// Use a positive number to indicate max replacement count.
result := strings.Replace(value, "bird", "fish", 1)
fmt.Println(result)
}
Output
fish bird bird
Tip: The arguments to NewReplace are in the form of before and after strings, one after another, in pairs.
Replace: We invoke Replace() on the Replacer to apply all strings replacements. In this example, three strings are replaced.
Golang program that uses Replacer
package main
import (
"fmt"
"strings"
)
func main() {
value := "bird, cat and fish"
// Create replacer with pairs as arguments.
r := strings.NewReplacer("bird", "dog",
"cat", "lion",
"fish", "monkey")
// Replace all pairs.
result := r.Replace(value)
fmt.Println(result)
}
Output
dog, lion and monkey
Version 1: This version of the code uses the Replacer class to replace substrings in a string.
Version 2: This code uses the strings.Replace multiple times to replace all the needed substrings.
Result: For repeated usage, a Replacer is faster than many calls to strings.Replace. But there is some complexity here.
Info: If you have only a couple Replaces to do, creating a Replacer will end up costing more. For larger tasks, Replacer is superior.
Golang program that benchmarks Replacer, Replace method
package main
import (
"fmt"
"strings"
"time"
)
func main() {
original := "cat and dog"
// Create Replacer (excluded from benchmark time).
r := strings.NewReplacer("cat", "car",
"and", "or",
"dog", "truck")
t0 := time.Now()
// Version 1: use Replacer.
for i := 0; i < 1000000; i++ {
result := r.Replace(original)
if result != "car or truck" {
fmt.Println(0)
}
}
t1 := time.Now()
// Version 2: use Replace calls.
for i := 0; i < 1000000; i++ {
temp := strings.Replace(original, "cat", "car", -1)
temp = strings.Replace(temp, "and", "or", -1)
result := strings.Replace(temp, "dog", "truck", -1)
if result != "car or truck" {
fmt.Println(0)
}
}
t2 := time.Now()
// Results.
fmt.Println(t1.Sub(t0))
fmt.Println(t2.Sub(t1))
}
Output
624.437ms , Replacer
805.5738ms, strings.Replace