How to replace a single character inside a string in Golang?

69,991

Solution 1

You can use strings.Replace.

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "a space-separated string"
    str = strings.Replace(str, " ", ",", -1)
    fmt.Println(str)
}

If you need to replace more than one thing, or you'll need to do the same replacement over and over, it might be better to use a strings.Replacer:

package main

import (
    "fmt"
    "strings"
)

// replacer replaces spaces with commas and tabs with commas.
// It's a package-level variable so we can easily reuse it, but
// this program doesn't take advantage of that fact.
var replacer = strings.NewReplacer(" ", ",", "\t", ",")

func main() {
    str := "a space- and\ttab-separated string"
    str = replacer.Replace(str)
    fmt.Println(str)
}

And of course if you're replacing for the purpose of encoding, such as URL encoding, then it might be better to use a function specifically for that purpose, such as url.QueryEscape

Solution 2

If you need to replace all occurrences of the character in the string, then use strings.ReplaceAll:

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "a space-separated string"
    str = strings.ReplaceAll(str, " ", ",")
    fmt.Println(str)
}
Share:
69,991
Admin
Author by

Admin

Updated on January 31, 2020

Comments

  • Admin
    Admin over 4 years

    I am getting a physical location address from a user and trying to arrange it to create a URL that would use later to get a JSON response from Google Geocode API.

    The final URL string result should be similar to this one, without spaces:

    http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true

    I do not know how to replace white spaces in my URL string and have commas instead. I did read a little about the strings and regexp packages and I have created the following code:

    package main
    
    import (
        "fmt"
        "bufio"
        "os"
        "http"
    )
    
    func main() {
        // Get the physical address
        r := bufio.NewReader(os.Stdin)  
        fmt.Println("Enter a physical location address: ")
        line, _, _ := r.ReadLine()
    
        // Print the inputted address
        address := string(line)
        fmt.Println(address) // Need to see what I'm getting
    
        // Create the URL and get Google's Geocode API JSON response for that address
        URL := "http://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&sensor=true"
        fmt.Println(URL)
    
        result, _ := http.Get(URL)
        fmt.Println(result) // To see what I'm getting at this point
    }