2011-11-18 14 views
14

ユーザーから物理的な住所を取得して、後でGoogle Geocode APIからJSON応答を取得するためのURLを作成するように手配しています。Golangの文字列の中の1文字を置き換えるには?

最終URL文字列結果は、スペースを含まない、this oneのようになります。

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

私は私のURL文字列に空白を交換し、代わりにコンマを持っているのか分かりません。私は、文字列と正規表現パッケージについて少し読みましたし、私は次のコードを作成している:あなたはstrings.Replaceを使用することができます

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 
} 

+2

のような特殊な関数を使用する方がよいかもしれません。文字列はgoの不変オブジェクトです。したがって、文字列内の文字を置き換えることはできません。代わりに、代わりのスライスを使って新しい文字列を作成することができます。 – user510306

答えて

40

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) 
} 

そしてもちろん:strings.Replacerを使用する方がよいかもしれません、

package main 

import (
    "fmt" 
    "strings" 
) 

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

あなたは、複数のものを交換する必要がある場合、または、あなたは何度も同じ交換を行う必要がありますURLエンコードなどのエンコードの目的で置き換える場合は、url.QueryEscape

+0

回答ありがとうございます。複数の文字を複数の異なる値に置き換える必要があります。例:AをB、CをDで置き換えます(これは単なる例です)。私は複数の 'string.Replace(...)'ステートメントを使用していますが、それは正常に動作しますが、もしあれば、より良い代替を探していますか? – Pranav

+0

私は最初にこの質問に答えたときに存在しなかった 'strings.Replacer'に言及するために私の答えを更新しました。 –

+1

もう一度、あなたの努力と時間をいただき、ありがとうございます。そして、目を開けて読むことが本当の読書であるという教訓を教えてくれました:) 昨日、私はこの 'replacer'を忘れてしまいました。ありがとう。 – Pranav

関連する問題