Как заменить один символ внутри строки в Golang? - PullRequest
24 голосов
/ 19 ноября 2011

Я получаю адрес физического местоположения от пользователя и пытаюсь упорядочить его для создания URL-адреса, который впоследствии будет использоваться для получения ответа JSON от Google Geocode API.

Окончательный результат строки URL-адреса должен быть аналогичнымна этот , без пробелов:

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

Я не знаю, как заменить пробелы в строке URL и запятыевместо.Я прочитал немного о строках и пакетах регулярных выражений и создал следующий код:

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
}

1 Ответ

70 голосов
/ 19 ноября 2011

Вы можете использовать strings.Replace.

package main

import (
    "fmt"
    "strings"
)

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

Если вам нужно заменить более чем одну вещь, или вам придется делать одну и ту же замену снова и снова, этоможет быть лучше использовать 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)
}

И, конечно, если вы заменяете для целей кодирования, такого как URL-кодирование, то может быть лучшеиспользуйте функцию специально для этой цели, такую ​​как url.QueryEscape

...