1
1行のbase64を複数の行に76文字に分割する最適な方法は何ですか?現在、私はパッケージをこのように使用しています:ベース64行をチャンクに分割
encoded := base64.StdEncoding.EncodeToString(data)
ありがとうございます!
1行のbase64を複数の行に76文字に分割する最適な方法は何ですか?現在、私はパッケージをこのように使用しています:ベース64行をチャンクに分割
encoded := base64.StdEncoding.EncodeToString(data)
ありがとうございます!
標準ライブラリにはこれがサポートされていません。あなたは自分で自分を作る必要があります。
単純な実装では、このようにすることができ:
func split(s string, size int) []string {
ss := make([]string, 0, len(s)/size+1)
for len(s) > 0 {
if len(s) < size {
size = len(s)
}
ss, s = append(ss, s[:size]), s[size:]
}
return ss
}
これは、文字列が消費されるまでループし、最初からsize
文字(バイト)の各反復カットに。
これは、UTF-8でエンコードされた形式(メモリ内に文字列を格納する方法)で1対1から1対1にマッピングする文字のみを使用するため、これがbase64のテキストで機能することに注意してください。これを任意の文字列で使用したい場合は、スライスが有効なUTF-8シーケンスを破る可能性があります。また、チャンクは必ずしもsize
文字である必要はありません。
テストその:
s := strings.Repeat("1", 2*76+3)
for _, chunk := range split(s, 76) {
fmt.Println(chunk)
}
出力(Go Playgroundでそれを試してください):
1111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111
111
ループ及び動作をスライス '[0:76]' – zerkms