TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to GO

Golang Replace String Examples: Replacer, NewReplacer

Use strings.Replace, in the strings package, to modify strings. Call NewReplacer.
Replace. Sometimes a string has characters we do not want. We can replace these substrings with other strings. In Go the strings package is helpful.
For simple replacements, we use strings.Replace. One or many occurrences can be targeted. For more complex sets of replacements we use a Replacer.
An example. This example uses the "strings" package and the strings.Replace func, which receives 4 arguments. It replaces all occurrences of a substring with another one.Strings

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
Count argument. We continue with a similar example of strings.Replace. The fourth argument here is positive 1. So only the first match is replaced—then the method stops.

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
Replacer. This is a class available in the "strings" package. We create a Replacer with the strings.NewReplace method. We pass string pairs to NewReplace.

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
Replacer versus replace. Is Replacer faster than strings.Replace? In my benchmark, I found that there is a cost to creating a Replacer instance.

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
A summary. String replacements are important—they are a common task in programs. With strings.Replace we have a way to target one or more instances of substrings.
With Replacer, we have a powerful class that can combine many replacements. This will speed up large or complex sets of replacement.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf