web-dev-qa-db-fra.com

Comment remplacer un seul caractère à l'intérieur d'une chaîne dans Golang?

J'obtiens une adresse de localisation physique d'un utilisateur et j'essaie de l'organiser pour créer une URL qui serait utilisée plus tard pour obtenir une réponse JSON de l'API Google Geocode.

Le résultat final de la chaîne URL doit être similaire à celui-ci , sans espaces:

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

Je ne sais pas comment remplacer les espaces blancs dans ma chaîne URL et avoir des virgules à la place. J'ai lu un peu sur les chaînes et les packages d'expressions rationnelles et j'ai créé le code suivant:

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
}
26
moalf

Vous pouvez utiliser strings.Replace .

package main

import (
    "fmt"
    "strings"
)

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

Si vous devez remplacer plusieurs éléments, ou si vous devez effectuer le même remplacement encore et encore, il peut être préférable d'utiliser un 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)
}

Et bien sûr, si vous remplacez à des fins de codage, comme le codage URL, alors il pourrait être préférable d'utiliser une fonction spécifiquement à cet effet, comme url.QueryEscape

72
Evan Shaw