2017-12-29 12 views
1

私は次のテキストを含む文字列を持っています。Golangは文字列で変換しますか?

\xD0\xA4\xD0\xB5\xD0\xB4\xD0\xBE\xD1\x80\xD0\xBE\xD0\xB2 

リテラルではありません。文字列では、このような別の文字として保存されます['\','x','D','0','\','x','A','4',...]

この文字列を通常の文字に変換するにはどうすればよいですか?

+0

これは単なる通常のルーンリテラルですが、明らかにそれはあなたが探しているものではありません。希望と実際の出力を含め、いくつかのコードを表示してください。 – Marc

+0

@Marc OPはすでに文字列を提供しています。そのためには、結果は「Федоров」でなければなりません。 – zerkms

+0

https://play.golang.org/p/Xb5sOLFX1vj ---与えられた 's'、'Федоров'を返すべきです。 – zerkms

答えて

1

Goは16進数rune literalsを受け入れます。

だから、通常の文字列として、あなたの入力を使用することができます。

fmt.Println("\xD0\xA4\xD0\xB5\xD0\xB4\xD0\xBE\xD1\x80\xD0\xBE\xD0\xB2") 
Федоров 

Playground例。

実際の文字列「["\" "x" "D" "0" ...]」で始める場合は、個々の4バイトシーケンスを文字に変換する必要があります。 一つの汚い方法は次のとおりです。

s := `\xD0\xA4\xD0\xB5\xD0\xB4\xD0\xBE\xD1\x80\xD0\xBE\xD0\xB2` 
s2, _ := hex.DecodeString(strings.Replace(s, "\\x", "", -1)) 
fmt.Printf("%s", s2) 

Playground例。

編集した質問に編集。

+0

文字列に['\'、 'x'、 'D'、 '0' ...など]の文字が含まれていて認識されませんルーンとして –

+0

上記のコードは、次のように正確に動作します。あなたは何をしましたか、そしてその結果は何でしたか? – Marc

+0

@Marc文字列リテラル '\ xD0'を持たず、文字列' \ xD0'を持っています。文字列リテラルで使用されると効果的に '\\ xD0'になります。 – zerkms

関連する問題